项目环境:
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的报错信息,上面报错信息中提示是版本可能有问题,如果只按照报错信息进行操作,很可能错误越来越多。 需要考虑两种操作的不同地方,根据不同地方去查找原因。