PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Cosa determina se rails include id::serial in una definizione di tabella?

Quando esegui rails db:migrate:reset al contrario di rails db:reset , lo schema del database non viene caricato da schema.rb ma viene invece ricostruito da tutte le tue migrazioni. Nelle migrazioni e nei file di schema non è necessario specificare un id campo, uno è fornito per impostazione predefinita. Tuttavia, a partire da Rails 5.1, la la dimensione predefinita del campo id è stata aumentata da INT a BIGINT per MySQL e da SERIAL a BIGSERIAL per PostgreSQL. Quindi probabilmente c'è qualche interazione tra le tue migrazioni, schema.rb e lo schema effettivo nel database che fa sì che il campo id venga trattato come predefinito (e omesso) in alcuni casi e specificato in modo esplicito in altri, proprio a causa della modifica della dimensione predefinita. È difficile indovinare l'origine del problema senza vedere tutti i file rilevanti.