Mysql 在迁移中使用my schema.rb时,我得到一个关于ID字段的错误

Mysql 在迁移中使用my schema.rb时,我得到一个关于ID字段的错误,mysql,ruby-on-rails,ruby,ruby-on-rails-5,schema.rb,Mysql,Ruby On Rails,Ruby,Ruby On Rails 5,Schema.rb,免责声明:我知道使用rake db:schema:load方法,但我的组织长期以来一直忽略git存储库中的schema.rb状态,采用迁移方法比让整个团队改变他们的行为更容易。因此,请假设我理解这种方法的存在,并且我已经衡量了它的可行性。请不要对rails“应该做”的方式发表评论,因为它目前对我来说不是一个有效可行的选择 现在我已经把它从我的系统里弄出来了 我在跑步: Ruby-on-Rails: v5.2.4.3 Ruby: v2.6.1p33 我的代码库使用迁移归档方法,

免责声明:我知道使用
rake db:schema:load
方法,但我的组织长期以来一直忽略git存储库中的schema.rb状态,采用迁移方法比让整个团队改变他们的行为更容易。因此,请假设我理解这种方法的存在,并且我已经衡量了它的可行性。请不要对rails“应该做”的方式发表评论,因为它目前对我来说不是一个有效可行的选择

现在我已经把它从我的系统里弄出来了

我在跑步:

Ruby-on-Rails: v5.2.4.3
Ruby:          v2.6.1p33
我的代码库使用迁移归档方法,定期将所有迁移压缩为一个迁移,该迁移实际上是
schema.rb
文件的快照,然后归档现有迁移。这在本地和测试环境中执行,但不在生产环境中执行

最近我尝试使用这种方法,但当我的测试执行时,我遇到了一系列错误:

Mysql2::错误:字段“id”没有默认值
出于这个问题的考虑,可以安全地假设我所有表上的ID字段都是使用Rails默认方法生成的,并且我没有在迁移中手动指定
ID

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

create_表“profiles”,id::integer,默认值:nil,选项:“ENGINE=InnoDB default CHARSET=utf8”,force::cascade do | t|
...
结束
该块中没有ID字段的索引声明,因此我假设Rails为我假设了ID字段

问题似乎是
schema.rb
定义没有假定ID字段的
AUTO_INCREMENT
默认值

有人想过为什么会发生这种情况,或者如何解决它吗

提前谢谢