我最近把我的MySQL数据库移到了一个新的服务器上,它给了我一些我以前在MySQL上遇到的新问题。 我的表列设置为“默认=>无”,我的表已根据数据类型生成默认值。但现在当我尝试插入表中时,我收到以下错误消息: “#1364 - 字段'column_name'没有默认值”,然后没有任何内容插入表中。MySQL#1364 - 字段'column_name'没有默认值 - 无法插入到数据库
我能做些什么来使“默认”选择它自己的价值?
我最近把我的MySQL数据库移到了一个新的服务器上,它给了我一些我以前在MySQL上遇到的新问题。 我的表列设置为“默认=>无”,我的表已根据数据类型生成默认值。但现在当我尝试插入表中时,我收到以下错误消息: “#1364 - 字段'column_name'没有默认值”,然后没有任何内容插入表中。MySQL#1364 - 字段'column_name'没有默认值 - 无法插入到数据库
我能做些什么来使“默认”选择它自己的价值?
它没有将数据保存到数据库中,因为字段'column_name'(也可能是其他)被检查为“NOT NULL”。这意味着该字段的值必须是其他值NULL(NULL - 根本没有数据)
将字段标记为非空通常是确保某些数据始终存在于字段中的好方法。根据您的需要,您也可以将其标记为NULL,以便它永远不会抛出错误并保存到数据库中,而无需将任何内容插入到指定的字段中。
这意味着你有2种选择:
标记您为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时,它不需要默认值,也不需要插入任何类型的值。 :) – Imaginaroom
也许这将帮助[MySQL的#1363](http://stackoverflow.com/questions/15438840/mysql-error-1364-field-doesnt-have-a-default-values) – winiardesign
你在现在一台新的服务器。它有不同的设置。最显着的是'STRICT_TRANS_TABLES',这是在上面的重复目标关闭原因中看到的。 – Drew