Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie wirkt sich die Änderung des mysql-Feldtyps von INT auf VARCHAR auf Daten aus, die zuvor als INT gespeichert wurden?

Versetzen Sie Ihren MySQL-Server in den strikten Modus, bevor Sie den Spaltentyp ändern, und stellen Sie sicher, dass Ihre varchar(n) Spalte hat ein ausreichend großes n um alle ganzen Zahlen zu halten, wenn sie in Strings konvertiert werden. Wenn Sie sich nicht im strikten Modus befinden, wird MySQL Ihre Daten stillschweigend abschneiden passend zu Ihrer Saitengröße :

Aber wenn Sie in strikter Modus zuerst:

mysql> set sql_mode = 'STRICT_ALL_TABLES';
mysql> alter table table_sample change col_sample col_sample varchar(6);

Sie erhalten eine nette Fehlermeldung wie diese:

ERROR 1406 (22001): Data too long for column 'col_sample' at row ...

wenn Ihre Ganzzahlen nicht alle in Ihr varchar passen .

Und natürlich haben Sie ein frisch verifiziertes Backup Ihrer Datenbank, bevor Sie versuchen, die Tabelle zu ändern. Und von verifiziert Ich meine, dass Sie Ihr Backup erfolgreich in einer Testdatenbank wiederhergestellt haben.