時雨に舞う

プログラミングや技術情報などの備忘録

Data too long for column

mysqlにおいて、今まで問題無かった個所で突然「Data too long for column 'xxx'」エラーが発生するようになったら確認しておくこと。

sql_modeに「STRICT_TRANS_TABLES」を付けていると桁数があふれた時にエラーを返すようになる。今まで付けていなかったのに何らかの理由で付けた場合、今まで問題無かった個所でエラーが発生する事になる。

  • sql_modeの確認
mysql> SELECT @@GLOBAL.sql_mode;
+--------------------------------------------+
| @@GLOBAL.sql_mode                          |
+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
  • オンライン状態での変更
mysql> SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
  • my.cnfでの設定
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

著者:t.n