PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Qu'est-ce qui détermine si rails inclut id ::serial dans une définition de table ?

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.