Rails Rename_column Migration Issue
-
13-09-2019 - |
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
Solução
Parece haver um ingresso não resolvido de longa data sobre esse assunto, conforme descrito aqui:
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"