MySQL #1364 - 字段“column_name”没有默认值 - 无法插入数据库 [重复]

Posted

技术标签:

【中文标题】MySQL #1364 - 字段“column_name”没有默认值 - 无法插入数据库 [重复]【英文标题】:MySQL #1364 - Field 'column_name' doesn't have a default value - Can't insert into DB [duplicate] 【发布时间】:2016-09-24 08:48:01 【问题描述】:

我最近将我的 mysql 数据库移到了一个新服务器上,它给我带来了一些我以前在使用 MySQL 时遇到过的问题。 我的表列设置为“默认 => 无”,并且我的表已根据数据类型生成默认值。但是现在当我尝试插入表时,我收到了以下错误消息: “#1364 - 字段 'column_name' 没有默认值”,然后表中没有插入任何内容。

我该怎么做才能让“默认”选择它自己的值?

【问题讨论】:

也许这会有所帮助mysql #1363 您现在在新服务器上。它有不同的设置。最值得注意的是STRICT_TRANS_TABLES ,在上面的欺骗目标关闭原因中可以看到。 【参考方案1】:

它肯定不会保存到数据库中,因为字段“column_name”(可能还有其他一些)被检查为“NOT NULL”。这意味着该字段的值必须是 NULL 以外的值(NULL - 根本没有数据)

将字段标记为非空通常是确保某些数据始终存在于字段中的好方法。根据您的需要,您还可以将其标记为 NULL,这样它就不会抛出错误,并且会保存到 DB 中,而无需在指定字段中插入任​​何内容。

这意味着你有两个选择:

    将您的字段标记为 NULL(首先检查您的字段是否需要具有某些值)。

    ALTER TABLE `your_table` 
    CHANGE COLUMN `your_field` `your_field` VARCHAR(250) NULL;
    

    为该字段添加一个默认值,因此如果插入时未提供数据,它将放置您定义的内容。 例如:

    ALTER TABLE `your_table` CHANGE COLUMN `your_field` `your_field` VARCHAR(250) NOT NULL DEFAULT 'some_default_value';
    

当然,将您的字段类型与您要更改的字段相匹配。

【讨论】:

感谢您的回答 :) 为什么我现在必须定义默认值,而我以前不需要。有没有办法关掉它? 也许它是旧版本的 mysql,或者您使用不同的 GUI 工具来创建将字段设为默认值的表。当您将字段标记为 NULL 时,它不需要默认值,也不需要插入任何类型的值。 :)

以上是关于MySQL #1364 - 字段“column_name”没有默认值 - 无法插入数据库 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

一般错误:1364:字段“dis”没有默认值

SQLSTATE[HY000]:一般错误:1364 字段

SQLSTATE [HY000]:一般错误:1364 字段“名称”没有默认值

SQLSTATE [HY000]:一般错误:1364 字段“标题”没有默认值

SQLSTATE [HY000]:一般错误:1364 字段 'uID' 没有默认值

Mysql添加用户错误:ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value解决方法(示例代码