1406: Data too long for column(列に対してデータが長すぎる)
MySQL意味
列の定義された最大長より長い値が書き込まれた。例えば 20 文字の文字列は VARCHAR(10) 列に収まらない。
原因
列幅がデータに対して小さすぎる、マルチバイト文字セット (utf8mb4) の文字が想定より多くの領域を使う、連結結果が長くなる、厳格 SQL モードが有効 (そうでなければ値は暗黙に切り詰められる)。
対処方法
列を広げる: ALTER TABLE my_table MODIFY my_column VARCHAR(255); 非常に長い内容には TEXT 型を検討する。値を短くする必要がある場合は、アプリケーションまたは SUBSTRING で切り詰める。あふれた行を特定する: SELECT * FROM my_table WHERE CHAR_LENGTH(my_column) > 10; 入力検証を追加する。
同じデータベースの他の項目
- 1136Column count doesn't match value count(列数と値の数が一致しない)
- 1048Column 'x' cannot be null(列は NULL にできない)
- 1292Incorrect datetime value / truncated incorrect value(日時の値が不正 / 不正な値の切詰め)
- 1071Specified key was too long; max key length is 767 bytes(キーが長すぎる)
- 1050Table already exists(テーブルがすでに存在する)
- 1051Unknown table 'x'(不明なテーブル)
- 1091Can't DROP 'x'; check that column/key exists(DROP できない。列/キーの存在を確認)