你的位置:

问答吧

-> MySQL

-> 问题详情

麻烦问下,为什么我的mysql存储过程一次调用,会被执行了两次?

mysql版本是 mysql-community-5.1.45

系统是centos 5.4

mysql做了主从

作者: yuwenbao

发布时间: 2010-11-24

你是怎么看出来执行了2次的?

把问题说详细点。

作者: zuoxingyu

发布时间: 2010-11-24

在 sqlyog中,调用了一次call 我的存储过程(入参)

然后,在mysql中执行show full processlist进行查看

发现有两个连接在同时执行我的存储过程中的语句(别的是不可能出现那些sql语句的)

而且经过执行后的结果来看,执行后的数据为正常数据的两倍。然后将存储过程中的sql语句进行逆运算(比如,加变成减),然后再执行,发现数据恢复为正常数据了。

作者: yuwenbao

发布时间: 2010-11-24

那在 MYSQL命令行工具中试一下。 以断定是你的SQLYOG的问题还是你的存储过程写错了。

作者: ACMAIN_CHM

发布时间: 2010-11-24

补充一下,刚开始查看是不会出现两个连接都同时执行我的存储过程中语句的情况的。只是中途突然出现一个连接在执行存储过程中的语句。一直不明白为什么,存储引擎用的是innodb

作者: yuwenbao

发布时间: 2010-11-24

以你现在提供的信息,无从判断! 最大的可能就是你的代码写的不对。

问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧)

作者: ACMAIN_CHM

发布时间: 2010-11-24

引用 4 楼 yuwenbao 的回复:

补充一下,刚开始查看是不会出现两个连接都同时执行我的存储过程中语句的情况的。只是中途突然出现一个连接在执行存储过程中的语句。一直不明白为什么,存储引擎用的是innodb

中途突然出现的这个连接是哪来的?

作者: zuoxingyu

发布时间: 2010-11-24

不知道,我才问的,呵呵,看看哪位大侠知道,什么语句或者什么情况会造成mysql存储过程另起一个连接去再执行一次存储过程。那个连接放心,是从同一个ip起来的,不是中间件,也不是任何人。所以比较纳闷。

作者: yuwenbao

发布时间: 2010-11-24