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

1364: Field 'name' doesn't have a default value(フィールド 'name' にデフォルト値がない)

MySQL

意味

DEFAULT のない NOT NULL として定義された列に値を指定せずに行が挿入された。厳密 SQL モードでは、欠落した必須列を自動的に補完できないため MySQL はエラーを発生させる。

原因

必須 (NOT NULL、DEFAULT なし) 列が INSERT から省略されており、sql_mode で STRICT_TRANS_TABLES/STRICT_ALL_TABLES が有効になっている。古い寛容なモード向けに書かれたアプリケーションを、厳密モードが有効なサーバーに移行するとこのエラーに遭遇する。

対処方法

INSERT に欠落した列の値を追加するか、列に適切な DEFAULT を定義する: ALTER TABLE my_table MODIFY my_column ... NOT NULL DEFAULT 'value'; 列が本当に任意であれば NULL を許可する。一時的/互換性のための回避策として sql_mode を緩和することもできるが、データ品質のため厳密モードの維持を推奨する。

DBAtlas で開く →

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