gpt4 book ai didi

ruby-on-rails - 无法 rake db :migrate

转载 作者:行者123 更新时间:2023-12-04 19:20:09 24 4
gpt4 key购买 nike

我在使用 One Month Rails 应用程序时遇到问题。

我已经运行

rails generate migration add_user_id_to_pins user_id:integer:index
But when I try to run
rake db:migrate
directly after I generate the migration, I get this error:

    ==  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

我认为这可能是因为我多次尝试生成迁移,但我删除了以前的迁移,所以我不确定是什么原因造成的。

最佳答案

您正在尝试添加 user_id在数据库中列两次。user_id列添加到 pins表同时创建引脚表。
请注意,迁移在线失败(您尝试再次将 user_id 添加到 pin 表)
add_column(:pins, :user_id, :integer)
rake aborted!

def change
create_table :pins do |t|
t.integer :user_id ## Added first time
t.timestamps
end
add_index :pins, :user_id
end
def change
Pins.reset_column_information
add_column :pins, :user_id, :integer ## Adding second time : Here you get the error
add_index :pins, :user_id
end

迁移文件应如下所示:
class AddUserIdToPins < ActiveRecord::Migration
def change
create_table :pins do |t|
t.integer :user_id
t.timestamps
end
add_index :pins, :user_id
Pin.reset_column_information ## Model name should be singular
end
end

关于ruby-on-rails - 无法 rake db :migrate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22513480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com