sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Qué determina si Rails incluye id::serial en una definición de tabla?

Cuando ejecutas rails db:migrate:reset a diferencia de rails db:reset , el esquema de la base de datos no se carga desde schema.rb pero en su lugar se reconstruye a partir de todas sus migraciones. En migraciones y archivos de esquema, no necesita especificar un id campo, se proporciona uno por defecto. Sin embargo, a partir de Rails 5.1, se aumentó el tamaño predeterminado del campo id de INT a BIGINT para MySQL y desde SERIAL a BIGSERIAL para PostgreSQL. Entonces, probablemente haya alguna interacción entre sus migraciones, schema.rb , y el esquema real en la base de datos que hace que el campo id se trate como predeterminado (y se omita) en algunos casos y se especifique explícitamente en otros, solo debido al cambio en el tamaño predeterminado. Es difícil adivinar el origen del problema sin ver todos los archivos relevantes.