Lorsque vous exécutez rails db:migrate:reset
par opposition à rails db:reset
, le schéma de la base de données n'est pas chargé depuis schema.rb
mais est plutôt reconstruit à partir de toutes vos migrations. Dans les migrations et les fichiers de schéma, vous n'avez pas besoin de spécifier un id
champ, un est fourni par défaut. Cependant, à partir de Rails 5.1, la la taille par défaut du champ id a été augmentée
de INT
à BIGINT
pour MySQL et depuis SERIAL
à BIGSERIAL
pour PostgreSQL. Il y a donc probablement une interaction entre vos migrations, schema.rb
, et le schéma réel dans la base de données qui fait que le champ id est traité par défaut (et omis) dans certains cas et explicitement spécifié dans d'autres, simplement en raison de la modification de la taille par défaut. Il est difficile de deviner la source du problème sans voir tous les fichiers pertinents.