PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Was bestimmt, ob Rails id::serial in einer Tabellendefinition enthält?

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.