Quando esegui rails db:migrate:reset
al contrario di rails db:reset
, lo schema del database non viene caricato da schema.rb
ma viene invece ricostruito da tutte le tue migrazioni. Nelle migrazioni e nei file di schema non è necessario specificare un id
campo, uno è fornito per impostazione predefinita. Tuttavia, a partire da Rails 5.1, la la dimensione predefinita del campo id è stata aumentata
da INT
a BIGINT
per MySQL e da SERIAL
a BIGSERIAL
per PostgreSQL. Quindi probabilmente c'è qualche interazione tra le tue migrazioni, schema.rb
e lo schema effettivo nel database che fa sì che il campo id venga trattato come predefinito (e omesso) in alcuni casi e specificato in modo esplicito in altri, proprio a causa della modifica della dimensione predefinita. È difficile indovinare l'origine del problema senza vedere tutti i file rilevanti.