尝试将数据插入到表中而未显式指定缺少的不可空列的值如果没有默认值,MySQL 可能会抛出一个错误,指出“字段没有默认值”(错误号: 1364).
用户在插入具有以下架构的表时遇到此错误:
CREATE TABLE try ( name VARCHAR(8), CREATED_BY VARCHAR(40) NOT NULL );
创建了一个触发器来自动填充CREATED_BY 字段的用户名:
CREATE TRIGGER autoPopulateAtInsert BEFORE INSERT ON try FOR EACH ROW SET NEW.CREATED_BY = USER();
但是,尝试使用以下查询:
INSERT INTO try (name) VALUES ('abc');
仍然会出现错误消息。
错误消息是在 MySQL 配置文件中设置 STRICT_TRANS_TABLES SQL 模式的结果(my.ini 或类似文件)。此模式强制执行有关不可为空列的默认值的严格规则。要解决此问题,用户应该:
或者,用户可以为使用 ALTER TABLE 语句的 CREATED_BY 字段。但是,如果触发器旨在动态设置值,则此方法可能不合适。
以上是为什么 MySQL 会抛出错误 1364:'字段没有默认值”?的详细内容。更多信息请关注PHP中文网其他相关文章!