我正在尝试在我的Heroku服务器上为我的Rails项目播放我的MySQL数据库,我收到此错误:
ActiveRecord :: InvalidForeignKey:Mysql2 ::错误:无法添加或更新子行:外键约束失败(
heroku_b08bb4ad8dfb726
。posts
,CONSTRAINTfk_rails_5b5ddfd518
FOREIGN KEY({{ 1}})参考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')
令人惊讶的是,我的开发环境中没有出现此错误。
种子文件的摘录如下所示:
updated_at
发布模型:
# 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
如果您在评论中需要更多代码段,请与我们联系。非常感谢您对此问题的任何想法。
答案 0 :(得分:1)
您还需要在 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
等值。