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.