我在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被设置为忽略错误......有人知道这个设置在哪里吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
因为列是使用默认值定义的,所以可以省略在insert语句中指定它。
抱歉,也许我误解了你的问题。您是否尝试插入零作为parent_id
的值?
答案 2 :(得分:0)
根本不设置parent_id值。
insert into some_table (title) values ("Some string")
答案 3 :(得分:0)
最终,我从未在MySQL中找到允许此设置的设置。并不是说我太过分手了。我说服务客户给了更多时间来使应用程序正确,并简单地删除了所有依赖于设置的编写糟糕的代码。