【问题标题】:Error when adding foreign key in ActiveRecord Migration在 ActiveRecord 迁移中添加外键时出错
【发布时间】:2013-05-02 06:32:07
【问题描述】:

我有以下 db/migrate ruby​​ 文件。当我尝试rake db:migrate 时,它给出了错误。

class CreateEmployers < ActiveRecord::Migration
  def self.up
            create_table :employers, {:primary_key => 'emp_id'} do |t|
            t.column :emp_name, :string, :limit => 100, :null => false  #validate
            t.column :company_id, :int, :null => false
            t.column :location, :string, :limit => 200, :null => false  #validate
            t.column :registered_date, :datetime
            t.column :is_verified, :boolean, :default => false, :null => false
            t.column :is_blacklisted, :boolean, :default => false, :null => false
            t.column :emp_grade, :string, :default => 'average', :null => false
            t.timestamps
                end
        end

        execute "ALTER TABLE `employers` 
  ADD CONSTRAINT `FK_EMPLOYERS_COMPANIES`
  FOREIGN KEY (`company_id` )
  REFERENCES `companies` (`company_id` )
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;"

        def self.down
                drop_table :employers
        end
end

运行rake db:migrate 时出现以下错误。如果我删除了execute 部分就可以了。

-- execute("ALTER TABLE `employers` \n  ADD CONSTRAINT `FK_EMPLOYERS_COMPANIES`\n  FOREIGN KEY (`company_id` )\n  REFERENCES `companies` (`company_id` )\n  ON DELETE NO ACTION\n  ON UPDATE NO ACTION;")
rake aborted!
An error has occurred, all later migrations canceled:

Mysql2::Error: Table 'test.employers' doesn't exist: ALTER TABLE `employers` 
  ADD CONSTRAINT `FK_EMPLOYERS_COMPANIES`
  FOREIGN KEY (`company_id` )
  REFERENCES `companies` (`company_id` )
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;

Companies 表已经创建,company_id 设置为主键(int(11),不为空且自动递增)。

ruby 版本是 2.0.0p0,mysql 版本是 5.5.31

我是不是做错了什么?

【问题讨论】:

    标签: mysql ruby sinatra rake rails-migrations


    【解决方案1】:

    您需要将execute 位移动到self.up

    【讨论】:

    • 感谢简短而准确的回答。现在好了。
    • 我们都犯过只需要第二双眼睛的错误 =)
    猜你喜欢
    • 2016-05-13
    • 2019-02-09
    • 2019-10-19
    • 2015-09-22
    • 2015-03-03
    • 2018-08-01
    • 2013-11-19
    • 2021-02-21
    • 1970-01-01
    相关资源
    最近更新 更多