2

I have a system that runs on hundreds of websites and I am getting an error for the first time. I was hoping that someone could tell me what may cause this error so I can try to remove it.

The issue comes when trying to add a page.

INSERT INTO pages (parent, name, type, sort) VALUES ('0', 'test', 'text', '37.5');

This spits out the following error.

[nativecode=1364 ** Field 'text' doesn't have a default value]

I thought this may be code based so I uploaded phpMyAdmin and the error still persisted.

There is a TEXT field called text. This doesn't have a default value, however it has never needed one. It has worked fine without one up to now.

When I try to set the default field on this server I get the following error.

#1101 - BLOB/TEXT column 'text' can't have a default value 

Basically, the question is - what is going on?

Is MySQLi different from MySQL? Could this be the cause.

My server runs mysql 5.0.5, this server runs mysql 5.0.51a. Can I safely assume this isn't the cause?

Does anyone have any ideas or even guesses as to where the cause of this may lie?

4

4 回答 4

1

我意识到这是一个老问题,但我有一个类似的问题,并通过谷歌找到了这个问题没有答案,所以如果其他人也这样做,这是我的解决方案:

就我而言,我试图在本地机器上运行购物车,但我不断收到问题中提到的数据库错误。我使用的是 MySQL 5.5.12,结果发现我选择的购物车中的 php 是为较旧的 MySQL 版本编写的,这不断标记错误和不兼容性。我不会建议您是否有类似的降级问题,幸运的是没有必要!

这里需要你禁用导致兼容性问题的 MySQL 严格模式。为此,您只需通过 phpMyAdmin/SQLyog(或选择的界面)运行以下查询:

SET @@global.sql_mode='';

只是为了澄清这是两个单引号(')。

有关更多信息或其他禁用 MySQL 严格模式的方法,请参阅此站点:http: //nickbartlett.com/wordpress/how-to-turn-off-mysql-strict-mode/

于 2012-07-26T11:17:44.970 回答
0

在调试遗留应用程序时遇到了同样的问题,并且能够通过进入我的 MySQL 配置文件(我的 mac 上的 my.cnf,但如果你是这样滚动的话,可能是 windows 上的 my.ini)并注释掉sql_mode=来解决它文件底部的NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES行。完成此操作后重新启动 mysql 以使更改生效。

于 2013-10-23T19:44:52.930 回答
0

如果您的名为“文本”的字段不可为空,则如果也没有默认值,则必须在其中插入一个值。我不知道为什么两个版本之间的行为存在差异。MySQLi 只是适用于更高版本 MySQL 的 MySQL 驱动程序版本(我认为 >= 4.1,但我不确定)。

于 2010-10-19T16:25:09.107 回答
0

如果该字段text在您要插入的表中,并且它不能为 NULL,那么您需要设置它的值。如果不这样做,将为它设置一个默认值,并且没有默认值,如您所见。尝试使用反引号来转义保留字,并为其插入一个值,如下所示:

INSERT INTO pages (parent, name, type, sort, `text`) VALUES ('0', 'test', 'text', '37.5', '');
于 2010-10-19T16:26:15.823 回答