1366: Incorrect string/integer value for column(列に対する文字列/整数値が不正)
MySQL意味
列の型または文字セットと互換性のない値が列に挿入された。通常は文字エンコーディングまたは型の不一致が原因。
原因
latin1 列への 4 バイトの絵文字/文字 (utf8mb4) の書き込み、数値列への非数値テキストの入力、誤った接続文字セット、または想定と異なる型の値の送信。
対処方法
文字の問題には、列/テーブルを utf8mb4 に変換する: ALTER TABLE my_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci、さらに接続文字セットを utf8mb4 に設定する。数値フィールドはアプリケーションで型を検証する。サーバーは厳格 SQL モード (STRICT) で動作している点に注意する。根本原因はデータの型/エンコーディングにある。
同じデータベースの他の項目
- 1215Cannot add foreign key constraint(外部キー制約を追加できない)
- 1451Cannot delete or update a parent row: a foreign key constraint fails(親行を削除/更新できない: 外部キー制約違反)
- 1452Cannot add or update a child row: a foreign key constraint fails(子行を追加/更新できない: 外部キー制約違反)
- 1044Access denied for user to database(データベースへのアクセス拒否)
- 1264Out of range value for column(列の範囲外の値)
- 1052Column 'x' in field list is ambiguous(フィールドリストの列が曖昧)
- 1136Column count doesn't match value count(列数と値の数が一致しない)