Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在ActiveRecord迁移中添加外键时出错_Mysql_Ruby_Sinatra_Rake_Rails Migrations - Fatal编程技术网

Mysql 在ActiveRecord迁移中添加外键时出错

Mysql 在ActiveRecord迁移中添加外键时出错,mysql,ruby,sinatra,rake,rails-migrations,Mysql,Ruby,Sinatra,Rake,Rails Migrations,我有以下db/migrate ruby文件。当我尝试rakedb:migrate时,它给出了一个错误 class CreateEmployers < ActiveRecord::Migration def self.up create_table :employers, {:primary_key => 'emp_id'} do |t| t.column :emp_name, :string, :limit => 100, :

我有以下db/migrate ruby文件。当我尝试
rakedb: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
公司表已经创建,公司id被设置为主键(int(11),非空且自动递增)

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


我做错什么了吗?

您需要将
execute
位移到
self.up
谢谢您简短而准确的回答。现在没事了。我们都犯过这样的错误,只需要第二双眼睛=)
-- 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;