項目環境:
vs2012+ mysql5.1+windows
今天做項目時,發現程序中對mysql執行添加操作,執行結果正常,更新mysql數據庫時,執行發生錯誤,報錯信息如下:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[GateName]='g',[GateType]='榪涘彛' where [GateID]=4' at line 1
發現中文亂碼,但是添加操作中也有中文,且不亂碼。於是找到執行的語句爲:update GateInfo set [GateName]=@GateName,[GateType]=@GateType where [GateID]=@GateID
爲了調試本語句,建立存儲過程如下:
DELIMITER $$
USE `test1`$$ -- 數據庫名稱
DROP PROCEDURE IF EXISTS `test`$$ -- 存儲過程名稱
CREATE DEFINER=`root`@`%` PROCEDURE `test`(
)
BEGIN
SET @GateName='y';
SET @GateType='進出口';
SET @GateID=4;
update GateInfo set [GateName]=@GateName,[GateType]=@GateType where [GateID]=@GateID; --關鍵語句
END$$
DELIMITER ;
建立存儲過程後報錯。
存儲過程中把update 語句改成如下格式“UPDATE GateInfo SET GateName=@GateName,GateType=@GateType WHERE GateID=@GateID;” 正常執行。
分析原因:項目架構是以前做vs+sql server 2008 是用的,換到mysql後,mysql語句中不能有"[" "]" 這樣的中括號,導致發生錯誤,去掉中括號即可。
注意:mysql執行錯誤後,不要只看mysql的報錯信息,上面報錯信息中提示是版本可能有問題,如果只按照報錯信息進行操作,很可能錯誤越來越多。 需要考慮兩種操作的不同地方,根據不同地方去查找原因。