DBAtlas · 数据库运维图谱

1364: Field 'name' doesn't have a default value(字段 'name' 没有默认值)

MySQL

含义

插入的行没有为定义为 NOT NULL 且无 DEFAULT 的列提供值。在严格 SQL 模式下,MySQL 无法自动填充缺失的必填列,因此报错。

原因

INSERT 中遗漏了必填(NOT NULL、无 DEFAULT)列,且 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 中打开 →

同一数据库的其他条目