在我的迁移错误中添加参考

德兹·纽(Deez New)

我使用mysql数据库创建了rails new demo_project我的凭据确定了我使用rake db:create table创建了表

Created database 'demo_project_development'
Created database 'demo_project_test'

然后我生成一张表

rails g model Product name:string description:text inventory:integer 'price:decimal{7,2}' restocked_at:datetime

这是成功的

class CreateProducts < ActiveRecord::Migration[5.0]
  def change
    create_table :products do |t|
      t.string :name
      t.text :description
      t.integer :inventory
      t.decimal :price, precision: 7, scale: 2
      t.datetime :restocked_at

      t.timestamps
    end
  end
end

之后,我产生了一个迁移

rails g migration AddQtySoldToProducts qty_solid:integer

并创建这个

class AddQtySoldToProducts < ActiveRecord::Migration[5.0]
  def change
    add_column :products, :qty_solid, :integer
  end
end

然后我创建另一个迁移

rails g migration AddRefNumToProducts ref_num:string:index

并创建这个

class AddRefNumToProducts < ActiveRecord::Migration[5.0]
  def change
    add_column :products, :ref_num, :string
    add_index :products, :ref_num
  end
end

最后一次迁移

rails g migration AddStyleToProducts style:references

并创建这个

class AddStyleToProducts < ActiveRecord::Migration[5.0]
  def change
    add_reference :products, :style, foreign_key: true
  end
end

当我运行时rake db:migrate出现错误

== 20170213061527 CreateProducts:迁移中

-create_table(:products)-> 0.1451s == 20170213061527 CreateProducts:已迁移(0.1453s)=========================

== 20170213061805 AddQtySoldToProducts:迁移===========================-add_column(:products,:qty_solid,:integer)-> 0.3441s == 20170213061805 AddQtySoldToProducts:已迁移(0.3443s)====================

== 20170213061950 AddRefNumToProducts:正在迁移============================-add_column(:products,:ref_num,:string)- > 0.0964s-add_index(:products,:ref_num)-> 0.4156s == 20170213061950 AddRefNumToProducts:已迁移(0.5121s)=====================

== 20170213062130 AddStyleToProducts:迁移============================--add_reference(:products,:style,{:foreign_key => true})耙中止了!StandardError:发生错误,所有以后的迁移都被取消:

Mysql2 :: Error:无法添加外键约束:ALTER TABLE productsADD CONSTRAINT fk_rails_326a064677FOREIGN KEY(style_id)参考stylesid)/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/mysql2-0.4.5/lib/ mysql2 / client.rb:120:_query' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/mysql2-0.4.5/lib/mysql2/client.rb:120:in in查询中的代码块/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/mysql2-0.4.5/lib/mysql2/client.rb:119:inhandle_interrupt' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/mysql2-0.4.5/lib/mysql2/client.rb:119:in 查询'/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:218:block in execute' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:589:in在日志块中/ Users / cdasia- tsd / .rvm / gems / ruby​​-2.3.3 / gems / activesupport-5.0.1 / lib / active_support / notifications / instrumenter.rb:21:instrument' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:583:inlog in '用户/cdasia-tsd/.rvm/gems/ruby- 2.3.3 / gems / activerecord-5.0.1 / lib / active_record / connection_adapters / abstract_mysql_adapter.rb:218:inexecute' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/mysql/database_statements.rb:31:in 执行'/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:916:in add_foreign_key' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/schema_definitions.rb:623:in foreign_key'/ Users / cdasia- tsd / .rvm / gems / ruby​​-2.3.3 / gems / activerecord-5.0.1 / lib / active_record / connection_adapters / abstract / schema_definitions.rb:100:在add_to' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:826:in add_reference中/Users/cdasia-tsd/.rvm/gems/ ruby-2.3.3 / gems / activerecord-5.0.1 / lib / active_record / migration.rb:846:block in method_missing' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:815:in 在say_with_time中/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord中-5.0.1 / lib / active_record / migration.rb:815:在say_with_time' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:835:in method_missing中/Users/cdasia-tsd/Desktop/demo_project/db/migrate/20170213062130_add_style_to_products.rb:3 :在change' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:789:in exec_migration中/ Users / cdasia-tsd /。 rvm / gems / ruby​​-2.3.3 / gems / activerecord-5.0.1 / lib / active_record / migration.rb:773:inblock (2 levels) in migrate' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:772:in 在迁移中/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:398:在迁移中with_connection' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:771:in / Users / cdasia-tsd / .rvm / gems / ruby​​-2.3.3 / gems / activerecord-5.0.1 / lib / active_record / migration.rb:951:migrate' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1212:in 在execute_migration_in_transaction中/用户/cdasia-tsd/.rvm/gems/ ruby-2.3.3 / gems / activerecord-5.0.1 / lib / active_record / migration.rb:1282:in ddl_transaction' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1211:in execute_migration_in_transaction' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord- 5.0 .1 / lib / active_record / migration.rb:1184:在block in migrate_without_lock' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1183:in 每个'/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb: 1183:在migrate_without_lock' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1132:in 迁移中的代码块/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1299:在with_advisory_lock' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1132:in 迁移'/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1006:inup' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:984:in 迁移'/Users/cdasia-tsd/.rvm /gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/tasks/database_tasks.rb:161:migrate' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/railties/databases.rake:58:in 在'/Users/cdasia-tsd/.rvm/gems/ruby'的块中(2级) -2.3.3 / gems / rake-12.0.0 / exe / rake:27:in <top (required)>' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/bin/ruby_executable_hooks:15:in eval' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/bin/ruby_executable_hooks:15:in<main>' ActiveRecord::StatementInvalid: Mysql2::Error: Cannot add foreign key constraint: ALTER TABLE产品ADD CONSTRAINT fk_rails_326a064677 FOREIGN KEY (style_id) REFERENCES样式 (ID ) /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/mysql2-0.4.5/lib/mysql2/client.rb:120:in _query' block in query' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/mysql2-0.4.5/lib/mysql2/client.rb:119:in /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/mysql2-0.4.5/lib/mysql2/ client.rb:120:在handle_interrupt中/ Users / cdasia-tsd / .rvm / gems / ruby​​-2.3.3 / gems / mysql2-0.4.5 / lib / mysql2 / client.rb:119:inquery' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:218:in 执行'/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:589:在block in log' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activesupport-5.0.1/lib/active_support/notifications/instrumenter.rb:21:in 工具中/ Users / cdasia- tsd / .rvm / gems / ruby​​-2.3.3 / gems / activerecord-5.0.1 / lib / active_record / connection_adapters / abstract_adapter.rb:583:in log' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:218:in execute' /Users/cdasia-tsd/.rvm/gems/ ruby- 2.3.3 / gems / activerecord-5.0.1 / lib / active_record / connection_adapters / mysql / database_statements.rb:31:在execute' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:916:in add_foreign_key中/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord -5.0.1 / lib / active_record / connection_adapters / abstract / schema_definitions.rb:623:在foreign_key' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/schema_definitions.rb:100:in add_to' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/ active_record / connection_adapters / abstract / schema_statements.rb:826:inadd_reference' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:846:in /users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:815:在block in say_with_time' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:815:in say_with_time中/ Users / cdasia-tsd / .rvm / gems / ruby​​-2.3.3 / gems / activerecord-5.0.1 / lib / active_record / migration.rb:835:in method_missing' /Users/cdasia-tsd/Desktop/demo_project/db/migrate/20170213062130_add_style_to_products.rb:3:in change' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/ gems / activerecord-5.0.1 / lib / active_record / migration.rb:789:在迁移中的exec_migration' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:773:in 块(2个级别)中/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0 .1 / lib / active_record / migration.rb:772:in block in migrate' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:398:in with_connection' /Users/ cdasia-tsd /.rvm/gems/ ruby-2.3.3 /gems/activerecord-5.0.1/lib/active_record/migration.rb : 771:in migrate' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:951:in migration'/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb : 1212 :inblock in execute_migration_in_transaction' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1282:in ddl_transaction' execute_migration_in_transaction' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1184:in /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1211:在migrate_without_lock块中/ Users / cdasia-tsd / .rvm / gems / ruby​​-2.3.3 / gems / activerecord-5.0.1 / lib / active_record / migration.rb:1183:in migration_without_lock each' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1183:in ' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/ gems / activerecord-5.0.1 / lib / active_record / migration.rb:1132:in block in migrate' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1299:in with_advisory_lock' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/ active_record /migration.rb:1132:in migrate' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1006:in up migrate' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/tasks/database_tasks.rb:161:in '/ Users / cdasia-tsd / .rvm / gems / ruby-2.3.3 / gems / activerecord-5.0.1 / lib / active_record / migration.rb:984:in migration '/用户/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/railties/databases.rake:58:inblock (2 levels) in <top (required)>' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/rake-12.0.0/exe/rake:27:in '/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/bin/ruby_executable_hooks:15:in'Mysql2 eval' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/bin/ruby_executable_hooks:15:in :: Error:无法添加外键约束/Users/cdasia-tsd/.rvm/gems/ruby -2.3.3 / gems / mysql2-0.4.5 / lib / mysql2 / client.rb:120:_query' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/mysql2-0.4.5/lib/mysql2/client.rb:120:in 在查询块中/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/mysql2- 0.4.5 / lib / mysql2 / client.rb:119:在handle_interrupt' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/mysql2-0.4.5/lib/mysql2/client.rb:119:in 查询中'/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract_mysql_adapter .rb:218:block in execute' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:589:in在日志块中/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activesupport-5.0.1/lib/active_support/notifications/instrumenter.rb:21 :在instrument' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:583:in日志中'/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:218:inexecute' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/mysql/database_statements.rb:31:in 执行'/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:916:in add_foreign_key' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/schema_definitions.rb:623:in foreign_key'/ Users / cdasia- tsd / .rvm / gems / ruby​​-2.3.3 / gems / activerecord-5.0.1 / lib / active_record / connection_adapters / abstract / schema_definitions.rb:100:在add_to' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:826:in add_reference中/Users/cdasia-tsd/.rvm/gems/ ruby-2.3.3 / gems / activerecord-5.0.1 / lib / active_record / migration.rb:846:block in method_missing' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:815:in 在say_with_time中/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord中-5.0.1 / lib / active_record / migration.rb:815:在say_with_time' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:835:in method_missing中/Users/cdasia-tsd/Desktop/demo_project/db/migrate/20170213062130_add_style_to_products.rb:3 :在change' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:789:in exec_migration中/ Users / cdasia-tsd /。 rvm / gems / ruby​​-2.3.3 / gems / activerecord-5.0.1 / lib / active_record / migration.rb:773:inblock (2 levels) in migrate' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:772:in 在迁移中/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:398:在迁移中with_connection' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:771:in / Users / cdasia-tsd / .rvm / gems / ruby​​-2.3.3 / gems / activerecord-5.0.1 / lib / active_record / migration.rb:951:migrate' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1212:in 在execute_migration_in_transaction中/用户/cdasia-tsd/.rvm/gems/ ruby-2.3.3 / gems / activerecord-5.0.1 / lib / active_record / migration.rb:1282:in ddl_transaction' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1211:in execute_migration_in_transaction' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord- 5.0 .1 / lib / active_record / migration.rb:1184:在block in migrate_without_lock' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1183:in 每个'/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb: 1183:在migrate_without_lock' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1132:in 迁移中的代码块/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1299:在with_advisory_lock' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1132:in 迁移'/Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:1006:inup' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/migration.rb:984:in 迁移'/Users/cdasia-tsd/.rvm /gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/tasks/database_tasks.rb:161:migrate' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/gems/activerecord-5.0.1/lib/active_record/railties/databases.rake:58:in 在'/Users/cdasia-tsd/.rvm/gems/ruby'的块中(2级) -2.3.3 / gems / rake-12.0.0 / exe / rake:27:in <top (required)>' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/bin/ruby_executable_hooks:15:in eval' /Users/cdasia-tsd/.rvm/gems/ruby-2.3.3/bin/ruby_executable_hooks:15: in`'任务:TOP => db:migrate(通过使用--trace运行任务来查看完整跟踪)TSD-Interns-MacBook-Pro:demo_project cdasia-tsd $

胜利者

你没有styles桌子。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章