首页 > 数据库 > mysql教程 > 为什么 MySQL 会抛出错误 1364:'字段没有默认值”?

为什么 MySQL 会抛出错误 1364:'字段没有默认值”?

Patricia Arquette
发布: 2024-12-24 02:59:14
原创
684 人浏览过

Why Does MySQL Throw Error 1364:

MySQL 错误 1364:字段没有默认值

尝试将数据插入到表中而未显式指定缺少的不可空列的值如果没有默认值,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 或类似文件)。此模式强制执行有关不可为空列的默认值的严格规则。要解决此问题,用户应该:

  1. 打开 MySQL 配置文件。
  2. 找到 STRICT_TRANS_TABLES 设置并删除或禁用它。
  3. 重新启动 MySQL 服务.

或者,用户可以为使用 ALTER TABLE 语句的 CREATED_BY 字段。但是,如果触发器旨在动态设置值,则此方法可能不合适。

以上是为什么 MySQL 会抛出错误 1364:'字段没有默认值”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板