Text

Index name length error in Rails migrations using SQLite

When trying to process a rename_column database migration, I ran into the following error after running rake db:migrate:

Index name 'temp_index_altered_long_class_name_on_even_longer_class_name_id' on table 'altered_long_class_name' is too long; the limit is 64 characters

This is an issue with index name length when using sqlite. A simple fix is to remove the index prior to renaming the column, then add it back in afterwards, as follows:

remove_index :long_class_name, [:even_longer_class_name_id]
rename_column :long_class_name, :original_name, :new_name
add_index :long_class_name, [:even_longer_class_name_id], :name => "index_long_class_name_on_even_longer_class_name_id"
Text

My First Ubuntu Install Commands

More for personal reference than anything else:

apt-get install ruby-full build-essential sqlite3 libsqlite3-dev apache2-mpm-prefork apache2-prefork-dev libapr1-dev libaprutil1-dev libmagick9-dev
...
gem install rails
gem install sqlite3-ruby passenger rmagick sparklines authlogic prawn fastercsv