對mysql數據庫操作時,某些情況下亂碼(本情況估計應該只屬於個別人情況)

    項目環境:

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的報錯信息,上面報錯信息中提示是版本可能有問題,如果只按照報錯信息進行操作,很可能錯誤越來越多。  需要考慮兩種操作的不同地方,根據不同地方去查找原因。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章