När du kör rails db:migrate:reset i motsats till rails db:reset , databasschemat laddas inte från schema.rb men är istället rekonstruerad från alla dina migrationer. I migrering och schemafiler behöver du inte ange ett id fältet tillhandahålls ett som standard. Men från och med Rails 5.1 ökades standardstorleken för id-fältet
från INT till BIGINT för MySQL och från SERIAL till BIGSERIAL för PostgreSQL. Så troligtvis finns det någon interaktion mellan dina migreringar, schema.rb , och det faktiska schemat i databasen som gör att id-fältet behandlas som standard (och utelämnas) i vissa fall och explicit specificeras i andra, bara på grund av förändringen i standardstorleken. Det är svårt att gissa källan till problemet utan att se alla relevanta filer.