2016-06-23 86 views
1

Ich konvertiere eine der "Varchar" Spalte in mysql Tabelle in ein Textfeld. Ich benutze einfach einen einzigen alter Befehl, um den Typ zu konvertieren. Als ich über Text las und Varchar erfuhr, dass es Unterschiede in den Speichermechanismen gab.Migrieren von Varchar zu Text in Mysql

Soll ich ein Migrationsskript schreiben, um den Typ der Spalte zu ändern und Daten zu verschieben, oder ein einzelner Befehl zum Ändern des Typs reicht?

+0

Wenn der Alter überlebt, sind Sie gut zu gehen – Drew

+0

Wenn ich es in einem Produktions-Setup tun werde? – ted

+1

Es ist eine sehr breite Frage oder ein Kommentar dann. Einige der Antworten sind auf anderen rdbms '... http://dba.stackexchange.com/q/27153 ... so wurde Ihre Frage in vielerlei Hinsicht oft gestellt. Schauen Sie sich nur die vorherigen Berichte an. – Drew

Antwort

0

Es gibt kein ein großes Problem varchar-text zu ändern, weil text mehr Datenlänge unterstützt als varchar, aber wenn das Feld einen Index hat, muss es fallen lassen und neuen Index mit Präfix col_name(length) (siehe CREATE INDEX syntax) schaffen werden.

Nach Ihren Daten Inhalt wäre vielleicht eine gute Idee Verwendung fulltext Indizes, aber das bedeutet, ändern Sie Ihre Suchausdrücke auf diesem Feld.

Wenn Sie sich in einer Produktionsumgebung befinden, wird die Tabelle während der Migration gesperrt, um Datenverluste zu vermeiden.

+0

Ich dachte sqlite erlaubt keine Änderung der Spaltentypen. Könnten Sie möglicherweise eine SQL-Abfrage dafür bereitstellen? –