Question

Je suis en train d'exécuter une migration sur une base de données existante pour changer le nom de la colonne sur une table. Quand je lance la migration, je reçois une erreur indiquant que les champs Blob / texte ne peuvent pas avoir une valeur par défaut. La colonne en question est une colonne de texte, avec un attribut non nul, mais aucune valeur par défaut.

La migration Rails tentatives est:

ALTER TABLE xxxxx CHANGEMENT abcd texte ABCD DEFAULT '' NOT NULL

Maintenant, je ne l'ai pas demandé la migration de changer le type de colonne, je n'ai demandé à renommer la colonne, alors pourquoi la migration en essayant de faire quoi que ce soit au type de colonne?

Je l'ai googlé la question, et ne suis pas venu avec une explication ou solution de contournement.

Toute aide appréciée.

Vikram

Était-ce utile?

La solution

Il ne semble y avoir un billet non résolu depuis longtemps sur cette question, comme décrit ici:

rails rapport bug

Le comportement par défaut de Rails est de faire des colonnes qui sont NULL, car cela empêche les faux positifs sur les contrôles de présence, etc., lors de la traduction des chaînes vides de nouveau dans Ruby. Toute chance que vous pouvez contourner ce problème en redéfinissant votre colonne de texte pour travailler avec les valeurs NULL dans la console mySQL?

EDIT

Vous pouvez le faire dans votre fichier de migration, ce n'est pas la façon Rails mais il est beaucoup plus agréable que d'envoyer un e-mail à tout le monde à changer leurs copies locales:

MyModel.connection.execute "ALTER TABLE xxxxx CHANGE abcd ABCD text DEFAULT NULL"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top