列タイプを変更する前にMySQLサーバーを厳密モードにし、varchar(n)
を確認してください 列に十分な大きさのn
があります 文字列に変換されるときにすべての整数を保持します。厳密モードでない場合、MySQLはデータをサイレントに切り捨てます文字列のサイズに合わせて
:
ただし、厳密モード 最初:
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
に収まらない場合 。
そしてもちろん、テーブルを変更する前に、データベースの新しい検証済みバックアップがあります。そして確認済み バックアップをテストデータベースに正常に復元したことを意味します。