Frage

Ich versuche, eine Migration in einer vorhandenen Datenbank auszuführen, um den Spaltennamen in einer Tabelle zu ändern. Wenn ich die Migration ausführe, erhalte ich einen Fehler, der besagt, dass Blob/Textfelder keinen Standardwert haben können. Die fragliche Spalte ist eine Textspalte mit einem Nicht-Null-Attribut, jedoch ohne Standardwert.

Die Migration, die Rails versucht, ist:

Tabelle ändern xxxxx RÜCKGELD abcd ABCD Text Standard '' nicht null

Jetzt habe ich die Migration nicht gebeten, den Spaltentyp zu ändern. Ich habe sie nur gebeten, die Spalte umzubenennen. Warum versucht die Migration, etwas mit dem Spaltentyp zu tun?

Ich habe das Problem gegoogelt und habe keine Erklärung oder Problemumgehung gefunden.

Jede Hilfe geschätzt.

Vikram

War es hilfreich?

Lösung

Es scheint ein langjähriges ungelöstes Ticket zu diesem Thema zu geben, wie hier beschrieben:

Rails Bug Report

Das Standardverhalten von Rails besteht darin, Spalten zu erstellen, die null sind, da dies bei der Übersetzung leerer Strings in Ruby falsch positiv auf Präsenzprüfungen usw. verhindert wird. Gibt es eine Chance, dass Sie dies umgehen können, indem Sie Ihre Textspalte neu definieren, um mit Nullwerten in der MySQL -Konsole zu arbeiten?

BEARBEITEN

Sie können dies in Ihrer Migrationsdatei tun, es ist nicht die Rails -Art, aber es ist viel schöner, als eine E -Mail an alle zu senden, um ihre lokalen Kopien zu ändern:

MyModel.connection.execute "ALTER TABLE xxxxx CHANGE abcd ABCD text DEFAULT NULL"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top