本人開發項目時,在從一個服務器導出數據庫到另一服務器時,存儲過程中,報Incorrect DECIMAL value: '0' for column '' at row -1錯誤。
原因:
存儲過程中使用了:函數CONVERT(IF(IN_YYJHFDL IS NULL,0,IN_EYJHFDL),DECIMAL(12,4))
在網上找了說是因為mysql的兩個版本不一樣造成的,是mysql的一個bug,5以上的版本如果是空值應該要寫NULL。
解決方案一:
1 my.ini中查找sql-mode, 2 3 默認為sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION", 4 5 將其修改為sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",重啟mysql后即可
本人嘗試過這種方法,沒有解決問題。
解決方案二:
考慮到最后還是解決問題,就將存儲過程中的CONVERT(IF(IN_YYJHFDL IS NULL,0,IN_EYJHFDL),DECIMAL(12,4))
改成了ROUND(IF(IN_YYJHFDL IS NULL,0,IN_SEYJHYDL),4)
實現了同樣的功能。
希望能夠幫助到大家。