微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在迁移中使用我的schema.rb时,出现有关ID字段的错误

如何解决在迁移中使用我的schema.rb时,出现有关ID字段的错误

免责声明:我知道rake db:schema:load方法,但是我的组织在忽略git存储库中的schema.rb状态已有很长的历史,因此采用迁移方法要比获取迁移方法容易得多。整个团队来改变他们的行为。因此,请假设我了解该方法的存在,并且已经评估了该方法的可行性。请不要提供有关“应该完成”的方式的评论,因为目前这对我来说不是一个有效的选择。

现在我把它从系统中删除了。

我正在跑步:

Ruby-on-Rails: v5.2.4.3
Ruby:          v2.6.1p33

我的代码库使用迁移归档方法,在该方法中,我们定期将所有迁移压缩为一个有效的schema.rb文件快照的迁移,然后归档现有的迁移。这是在我们的本地和测试环境中执行的,而不是在我们的生产环境中执行的。

最近,我尝试使用这种方法,但是当我执行测试时,遇到了很多这样的错误

MysqL2::Error: Field 'id' doesn't have a default value

出于这个问题的考虑,可以放心地假设我所有表的ID字段都是使用Rails方法生成的,并且在迁移时我没有手动指定id

生成的schema.rb生成这种类型的输出

create_table "profiles",id: :integer,default: nil,options: "ENGINE=InnoDB DEFAULT CHARSET=utf8",force: :cascade do |t|
  ...
end

该块中没有ID字段的索引声明,因此我假设Rails为我假设了ID字段。

问题似乎是schema.rb定义未假定ID字段的认值为AUTO_INCREMENT

任何人都对发生这种情况的原因或解决方法有任何想法?

谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。