Wenn Sie rails db:migrate:reset
ausführen im Gegensatz zu rails db:reset
, wird das Datenbankschema nicht aus schema.rb
geladen sondern wird stattdessen aus all Ihren Migrationen rekonstruiert. In Migrationen und Schemadateien müssen Sie keine id
angeben Feld wird standardmäßig eines bereitgestellt. Ab Rails 5.1 wurde jedoch die Standardgröße des ID-Felds erhöht
von INT
zu BIGINT
für MySQL und von SERIAL
zu BIGSERIAL
für PostgreSQL. Wahrscheinlich gibt es also eine Interaktion zwischen Ihren Migrationen, schema.rb
, und das tatsächliche Schema in der Datenbank, das dazu führt, dass das ID-Feld in einigen Fällen als Standard behandelt (und weggelassen) und in anderen explizit angegeben wird, nur aufgrund der Änderung der Standardgröße. Es ist schwer, die Ursache des Problems zu erraten, ohne alle relevanten Dateien zu sehen.