Переведите ваш сервер MySQL в строгий режим, прежде чем изменить тип столбца, и убедитесь, что в столбце varchar(n)
достаточно большой n
, чтобы вместить все целые числа, когда они преобразованы в строки. Если вы не в строгом режиме, MySQL будет молча обрезать ваши данные до размера вашей строки :
Если режим строгого SQL не включен, и вы присваиваете столбцу CHAR
или VARCHAR
значение, которое превышает максимальную длину столбца, это значение усекается, чтобы соответствовать, и генерируется предупреждение. Для усечения непространственных символов вы можете вызвать ошибку (а не предупреждение) и запретить вставку значения с помощью режима строгого SQL.
Но если вы войдете в строгий режим сначала:
mysql> set sql_mode = 'STRICT_ALL_TABLES';
mysql> alter table table_sample change col_sample col_sample varchar(6);
Вы получите хорошее сообщение об ошибке, подобное этому:
ERROR 1406 (22001): Data too long for column 'col_sample' at row ...
если ваши целые числа не вписываются в varchar
.
И, конечно, у вас будет новая проверенная резервная копия вашей базы данных, прежде чем вы попытаетесь изменить таблицу. И под проверено Я имею в виду, что вы успешно восстановили свою резервную копию в тестовой базе данных.