Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment le changement du type de champ mysql de INT à VARCHAR affectera-t-il les données précédemment stockées en tant que INT

Mettez votre serveur MySQL en mode strict avant de changer le type de colonne et assurez-vous que votre varchar(n) la colonne a un n suffisamment grand pour contenir tous les entiers lorsqu'ils sont convertis en chaînes. Si vous n'êtes pas en mode strict, MySQL tronquera silencieusement vos données pour s'adapter à votre taille de chaîne :

Mais si vous entrez dans mode strict d'abord :

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

Vous obtiendrez un joli message d'erreur comme celui-ci :

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

si vos entiers ne rentrent pas tous dans votre varchar .

Et, bien sûr, vous aurez une nouvelle sauvegarde vérifiée de votre base de données avant d'essayer de changer la table. Et par vérifié Je veux dire que vous avez restauré avec succès votre sauvegarde dans une base de données de test.