MySql设置允许“”等于null或0?

时间:2009-12-03 13:09:21

标签: mysql

我在Linux上运行了一个MySQL服务器,在Windows上运行了另一个服务器,两者都包含数据库表的重复副本。该表定义如下:

parent_id - int(10) - nullable - default=null
title - varchar(100)

我可以在Linux上执行这个sql,它运行正常(我知道,这是错误和可怕的,不应该工作,但确实如此)。在父ID中插入0,但在Windows上会抛出错误,说使用“”附近的正确语法:

insert into some_table (parent_id, title) values ("", "Some string")

是否有MySQL设置告诉Linux版本接受“”作为有效的int?

修改

我希望我知道,我同意,使上述工作生病。这在任何方面都是错误的 - 但这是我必须要处理的事情。我的任务是维护一个编写得很糟糕的PHP产品,该产品依赖于上述类型的SQL语句能够执行。

编辑2

有趣的是,在控制台中,Linux上的MySQL会发出警告“不正确的整数值” - 但它仍会插入记录。 Windows上的MySQL会抛出消息,但不会执行插入操作。所以不知何故,Linux上的MySQL被设置为忽略错误......有人知道这个设置在哪里吗?

4 个答案:

答案 0 :(得分:1)

如何使用IFNULLIF函数修复语句而不是更改MySQL设置。

答案 1 :(得分:0)

因为列是使用默认值定义的,所以可以省略在insert语句中指定它。

抱歉,也许我误解了你的问题。您是否尝试插入零作为parent_id的值?

答案 2 :(得分:0)

根本不设置parent_id值。

insert into some_table (title) values ("Some string")

答案 3 :(得分:0)

最终,我从未在MySQL中找到允许此设置的设置。并不是说我太过分手了。我说服务客户给了更多时间来使应用程序正确,并简单地删除了所有依赖于设置的编写糟糕的代码。