我试图在Heroku服务器上为Rails项目播种MySQL数据库,但出现此错误:
ActiveRecord :: InvalidForeignKey:Mysql2 :: Error:无法添加或更新子行:外键约束失败(heroku_b08bb4ad8dfb726
。posts
,CONSTRAINT fk_rails_5b5ddfd518
外键(user_id
)参考users
()):插入id
(posts
,id
,title
,description
,user_id
,category_id
,created_at
)值(1,“标题”,“ Desc”, 1,1,'2016-08-29 06:53:04','2016-08-29 06:53:04')
出乎意料的是,我在开发环境中没有得到这个错误。
我的种子文件的摘录如下所示:
# Creating Users here
Category.create!([
{ id: 1, name: "Category"},
])
Post.create!([
{ id: 1, title: "Title", description: "Desc", user_id: "1", category_id: "1" },
])
帖子模型:
class Post < ApplicationRecord
belongs_to :user
belongs_to :category
has_many :comments
validates :title, :description, presence: true
end
类别模型:
class Category < ApplicationRecord
has_many :posts
end
如果您需要更多的代码片段,请告诉我。非常感谢您提供有关此问题的任何想法。
最佳答案
您还需要在seed.rb中创建用户
约束失败,因为您的数据库中没有带有user
的id = 1
将此添加到您的种子文件中
user = User.create(
# user attributes like `name`
)
Post.create!([
{ id: 1, title: "Title", description: "Desc", user_id: user.id, category_id: "1" },
])
另外,我建议不要硬编码
user_id
之类的值,而应使用first
或last
或随机记录以避免约束失败关于mysql - Rails + Heroku:外键约束失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39200346/