MySQL + Rails:错误:150“外键约束不正确”
我试图迁移我的Rails MySQL数据库,我收到以下错误:
ActiveRecord :: StatementInvalid:Mysql2 :: Error:无法创建表
development
。comments
(错误:150“外键约束形成错误”):CREATE TABLEcomments
(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,INDEXindex_comments_on_user_id
(user_id
),INDEXindex_comments_on_post_id
(post_id
),CONSTRAINTfk_rails_03de2dc08c
FOREIGN KEY(user_id
)REFERENCESusers
(id
),CONSTRAINTfk_rails_2fd19c0db7
FOREIGN KEY(post_id
)REFERENCESposts
(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相关的任何内容。 谢谢!
我刚刚找到了这个问题的答案。 我的错误与我的post表迁移最后一次有关。 我的注释表迁移引用了post table id父字段。 一旦我重新生成了注释表迁移并删除了之前的注释表迁移,一切都很顺利。