PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

O que determina se rails inclui id::serial em uma definição de tabela?


Quando você executa rails db:migrate:reset ao contrário de rails db:reset , o esquema do banco de dados não é carregado de schema.rb mas é reconstruído a partir de todas as suas migrações. Em migrações e arquivos de esquema, você não precisa especificar um id campo, um é fornecido por padrão. No entanto, a partir do Rails 5.1, o tamanho padrão do campo id foi aumentado de INT para BIGINT para MySQL e de SERIAL para BIGSERIAL para PostgreSQL. Então provavelmente há alguma interação entre suas migrações, schema.rb , e o esquema real no banco de dados que está fazendo com que o campo id seja tratado como padrão (e omitido) em alguns casos e seja explicitamente especificado em outros, apenas devido à alteração no tamanho padrão. É difícil adivinhar a origem do problema sem ver todos os arquivos relevantes.