DBAtlas · データベース運用アトラス

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; 入力検証を追加する。

DBAtlas で開く →

同じデータベースの他の項目