2012-07-23 185 views
1

我正在將系統從舊服務器複製到公司的新(er)系統,我沒有參與以前系統的開發。他們有一個當前(複雜)網頁,將記錄插入到數據庫中,但我不完全理解它。但是,每個頁面的代碼和數據庫設置完全相同。當我嘗試插入未完成的表單時(在我的版本中),我得到Field 'invoiceNo' doesn't have a default value,而在以前的系統上提交相同的未完成表單將創建(不完整)數據。爲什麼某些MySQL字段現在需要默認值?

我檢查了罪魁禍首字段的設置,並將其設置爲「非空」,其默認值爲「Null」。兩個數據庫的設置都是一樣的,那麼爲什麼相同的插入數據被區別對待呢?

舊MySQL版本:5.0.41社區-NT

新的MySQL版本:5.5.20

舊MySQL管理版本:1.2.12

新的MySQL管理員版本:1.2.17

對不起,如果聽起來我沒有什麼線索我說的 - 事實上,我不認爲舊系統對我來說是陌生人,它是巨大而複雜的。可以回答任何問題。

+0

列'auto_increment'在舊的數據庫?和MySQL v1.2 ??當然這是不正確的.. – eggyal 2012-07-23 15:45:51

+0

沒有什麼是auto_increment,其中一個字段是一個日期,所以不能自動增量。我的不好,這是MySQL管理員1.2.12。實際的MySQL版本是舊的:5.0.41-community-nt,新的是5.5.20。 (都是通過選擇版本();在查詢瀏覽器中) – Andy 2012-07-23 15:53:55

回答

1

可能是因爲新服務器設置爲「嚴格」或者在引入新版本時導致向後兼容性中斷。

您的問題是,雖然該字段預計「不爲空」,但是您提供空值(即不提供它設置爲期望的數據)如果您將此字段更改爲默認爲「0」,那麼空字段將默認爲0,並應按預期添加數據。 (但是如果字段期望「不爲空」,那麼你應該不會提交「null」,所以我希望在默認值爲0的情況下查看它的路由原因!)

相關問題