Mysql
 sql >> Database >  >> RDS >> Mysql

In che modo la modifica del tipo di campo mysql da INT a VARCHAR influirà sui dati precedentemente archiviati come INT

Porta il tuo server MySQL in modalità rigorosa prima di modificare il tipo di colonna e assicurati che il tuo varchar(n) la colonna ha un n sufficientemente grande per contenere tutti gli interi quando vengono convertiti in stringhe. Se non sei in modalità rigorosa, MySQL troncherà silenziosamente i tuoi dati per adattarsi alle dimensioni della tua stringa :

Ma se entri in modalità rigorosa primo:

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

Riceverai un bel messaggio di errore come questo:

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

se i tuoi numeri interi non rientrano tutti nel tuo varchar .

E, naturalmente, avrai un nuovo backup verificato del tuo database prima di provare a cambiare la tabella. E da verificato Voglio dire che hai ripristinato con successo il tuo backup in un database di prova.