如何解决在迁移中使用我的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
。
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 举报,一经查实,本站将立刻删除。