首页 文章

MySQL Rails:错误:150“外键约束不正确”

提问于
浏览
1

我试图迁移我的Rails MySQL数据库,我收到以下错误:

ActiveRecord :: StatementInvalid:Mysql2 :: Error:无法创建表development.comments(错误:150“外键约束形成错误”):CREATE TABLE注释(id int AUTO_INCREMENT PRIMARY KEY,comment varchar(255),user_id int,post_id int,created_at datetime NOT NULL,updated_at datetime NOT NULL,INDEX index_comments_on_user_id(user_id),INDEX index_comments_on_post_id(post_id),CONSTRAINT fk_rails_03de2dc08c FOREIGN KEY(user_id)REFERENCES users(id),CONSTRAINT fk_rails_2fd19c0db7 FOREIGN KEY(post_id)REFERENCES posts( id))ENGINE = InnoDB

以下是我的迁移:

class CreateUsers < ActiveRecord::Migration[5.0]
  def change
    create_table :users do |t|
      t.string :first_name
      t.string :last_name
      t.string :linkedin_username
      t.string :facebook_username
      t.string :facebook_id
      t.string :profile_image
      t.string :title_image
      t.string :connection
      t.boolean :team
      t.boolean :active
      t.boolean :admin
      t.string :email
      t.string :password_digest

      t.timestamps
    end
  end
end    

class CreateComments < ActiveRecord::Migration[5.0]
  def change
    create_table :comments do |t|
        t.string :comment
        t.references :user, foreign_key: true
        t.references :post, foreign_key: true
      t.timestamps
    end
  end
end

class CreateCategories < ActiveRecord::Migration[5.0]
  def change
    create_table :categories do |t|
        t.string :name
      t.text :description

      t.timestamps null: false
    end
  end
end

class CreatePosts < ActiveRecord::Migration[5.0]
  def change
    create_table :posts do |t|
        t.string :title
      t.string :description
      t.references :category, foreign_key: true
      t.references :user, foreign_key: true
    end
  end
end

如果有人能在这里给我一个想法,我将非常感激 . 我一直在谷歌搜索解决方案一段时间,但无法找到与Rails相关的任何内容 . 谢谢!

1 回答

  • 0

    我刚刚找到了这个问题的答案 . 我的错误与我的帖子表迁移最后一次有关 . 我的注释表迁移引用了post table id父字段 . 一旦我重新生成了注释表迁移并删除了之前的注释表迁移,一切都很顺利 .

相关问题