2016-09-24 87 views
2

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

我能做些什么来使“默认”选择它自己的价值?

+1

也许这将帮助[MySQL的#1363](http://stackoverflow.com/questions/15438840/mysql-error-1364-field-doesnt-have-a-default-values) – winiardesign

+0

你在现在一台新的服务器。它有不同的设置。最显着的是'STRICT_TRANS_TABLES',这是在上面的重复目标关闭原因中看到的。 – Drew

回答

2

它没有将数据保存到数据库中,因为字段'column_name'(也可能是其他)被检查为“NOT NULL”。这意味着该字段的值必须是其他值NULL(NULL - 根本没有数据)

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

这意味着你有2种选择:

  1. 标记您为NULL字段(首先检查是否需要你的领域有一定的价值)。

    ALTER TABLE your_table CHANGE COLUMN your_fieldyour_field VARCHAR(250)NULL;

  2. 将缺省值添加到该字段,所以如果在插入时没有提供数据,它将放置您定义的内容。 例如:

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

    当然,您的字段类型会匹配您要更改的字段。

+0

谢谢你的回答:)为什么我现在不得不在以前定义默认值。有没有办法关闭它? –

+0

也许这是一个老版本的mysql,或者你使用了一个不同的GUI工具来创建你的表,它使得字段为默认值。 当您将某个字段标记为NULL时,它不需要默认值,也不需要插入任何类型的值。 :) – Imaginaroom

相关问题