0
我遇到了One Month Rails应用程序的问题。不能耙分贝:迁移
我已经运行
rails generate migration add_user_id_to_pins user_id:integer:index但是,当我尝试直接运行
rake db:migrate后,我产生的迁移,我得到这个错误:
== AddUserIdToPins: migrating ================================================
-- add_column(:pins, :user_id, :integer)
rake aborted!
An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: duplicate column name: user_id: ALTER TABLE "pins" ADD "user_id" integer/home/colin/.rvm/gems/ruby-2.0.0-p451/gems/sqlite3- 1.3.9/lib/sqlite3/database.rb:91:in `initialize'
/home/colin/.rvm/gems/ruby-2.0.0-p451/gems/sqlite3-1.3.9/lib/sqlite3/database.rb:91:in `new'
/home/colin/.rvm/gems/ruby-2.0.0-p451/gems/sqlite3-1.3.9/lib/sqlite3/database.rb:91:in `prepare'
/home/colin/.rvm/gems/ruby-2.0.0-p451/gems/sqlite3-1.3.9/lib/sqlite3/database.rb:134:in `execute'
/home/colin/.rvm/gems/ruby-2.0.0-p451/gems/activerecord-4.0.3/lib/active_record/connection_adapters/sqlite3_adapter.rb:331:in `block in execute'
/home/colin/.rvm/gems/ruby-2.0.0-p451/gems/activerecord-4.0.3/lib/active_record/connection_adapters/abstract_adapter.rb:435:in `block in log'
/home/colin/.rvm/gems/ruby-2.0.0-p451/gems/activesupport-4.0.3/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/home/colin/.rvm/gems/ruby-2.0.0-p451/gems/activerecord-4.0.3/lib/active_record/connection_adapters/abstract_adapter.rb:430:in `log'
/home/colin/.rvm/gems/ruby-2.0.0-p451/gems/activerecord-4.0.3/lib/active_record/connection_adapters/sqlite3_adapter.rb:331:in `execute'
/home/colin/.rvm/gems/ruby-2.0.0-p451/gems/activerecord-4.0.3/lib/active_record/connection_adapters/abstract/schema_statements.rb:360:in `add_column'
/home/colin/.rvm/gems/ruby-2.0.0-p451/gems/activerecord-4.0.3/lib/active_record/connection_adapters/sqlite3_adapter.rb:454:in `add_column'
/home/colin/.rvm/gems/ruby-2.0.0-p451/gems/activerecord-4.0.3/lib/active_record/migration.rb:625:in `block in method_missing'
这些都是我在迁移中产生的文件的内容:
class AddUserIdToPins < ActiveRecord::Migration
def change
create_table :pins do |t|
t.integer :user_id
t.timestamps
end
add_index :pins, :user_id
end
def change
Pins.reset_column_information
add_column :pins, :user_id, :integer
add_index :pins, :user_id
end
end
我认为这可能是因为我有多次尝试生成迁移,但我删除了以前的迁移,所以我不确定是什么导致了这种情况。
感谢您的回答。我认为你解决了我的问题,但它不幸造成了另一个问题。现在我收到错误:“SQLite3 :: SQLException:table”pins“已存在:CREATE TABLE”pins“(”id“INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,”user_id“integer,”created_at“datetime,”updated_at“datetime) “当尝试db:migrate时。 – user3172050
首先,您需要'rake db:rollback version = version_number',其中'20140125191228'替换version_number,如果迁移文件是'20140125191228_create_pins.rb' –
运行后'rake db:migrate'。 –