我有一臺運行在Linux上的MySQL服務器,另一臺服務器上都有一個包含數據庫表的重複副本的MySQL服務器。該表的定義如下:允許「」等於null或0的MySql設置?
parent_id - int(10) - nullable - default=null
title - varchar(100)
我可以在Linux上執行此SQL,它工作正常(我知道,這是錯誤的,可怕的,不應該工作,但它確實)。插入一個0到父ID,但在Windows上,則拋出Error說用接近「正確的語法」:
insert into some_table (parent_id, title) values ("", "Some string")
有沒有告訴Linux版本接受一個MySQL設置「」作爲有效的int?
編輯
我希望它是知道我同意,使得上述工作只是普通的病。這在各方面都是錯誤的 - 但這是我必須要處理的。我的任務是維護一個寫得很差的PHP產品,這個產品依賴於上面能夠執行的SQL語句類型。
EDIT 2
有趣的是,在控制檯中,MySQL在Linux上拋出一個警告說「不正確的整數值'」 - 但它仍然插入記錄。 Windows上的MySQL會拋出消息但不會執行插入操作。因此,不知何故,Linux上的MySQL被設置爲忽略錯誤......有人知道這個設置駐留在哪裏嗎?
這將適合我稱之爲「可怕的編程習慣」。爲什麼要繼續推送一個字符串以最終存儲一個int? – Romain 2009-12-03 13:12:06
簡而言之,原始程序員有一個他無法修復的錯誤。他的parent_id爲null,並且他不喜歡在sql表示(「Some String」)時炸燬了它 - 所以他讓它工作爲0,然後以這種方式修復了它的空問題。懶惰的肛交...所以現在我必須處理它。 – bugfixr 2009-12-03 13:42:53
如果在你的Windows系統中用'''替換''',它會怎麼做呢?這實際上可能是由於SQL標準遵從性的不同造成的(就像你的Windows系統是ANSI兼容的, Linux會更靈活) – Romain 2009-12-03 13:49:04