Pergunta

Estou tentando executar uma migração em um banco de dados existente para alterar o nome da coluna em uma tabela. Quando executo a migração, recebo um erro informando que os campos BLOB/texto não podem ter um valor padrão. A coluna em questão é uma coluna de texto, com um atributo não nulo, mas nenhum valor padrão.

A migração que trata as tentativas é:

ALTERAR A TABELA xxxxx MUDANÇA abcd ABCD texto padrão '' não nulo

Agora, não pedi à migração para alterar o tipo de coluna, só pedi para renomear a coluna, então por que a migração está tentando fazer alguma coisa para o tipo de coluna?

Eu pesquisei o problema no Google e não apresentei uma explicação ou solução alternativa.

Qualquer ajuda apreciada.

Vikram

Foi útil?

Solução

Parece haver um ingresso não resolvido de longa data sobre esse assunto, conforme descrito aqui:

Relatório de bug do Rails

O comportamento padrão do Rails é fazer colunas que são nulas, pois isso impede que falsos positivos nas verificações de presença, etc., ao traduzir as cordas em branco de volta para o rubi. Alguma chance que você possa contornar isso redefinindo sua coluna de texto para trabalhar com valores nulos no console MySQL?

EDITAR

Você pode fazer isso no seu arquivo de migração, não é o caminho do Rails, mas é muito melhor do que enviar um e -mail a todos para mudar suas cópias locais:

MyModel.connection.execute "ALTER TABLE xxxxx CHANGE abcd ABCD text DEFAULT NULL"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top