使用mysql C API中的mysql_real_query执行下面两条语句
SELECT n_type, n_msgs FROM Notify WHERE n_uid = 10002;DELETE FROM Notify WHERE n_uid = 10002
出现下面的错误:
Error :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 'DELETE FROM Notify WHERE n_uid = 10002' at line 1
这两句单独执行不报错,一起执行的话就报错!而在mysql终端上同时执行两句确不报错。。。
由于服务端使用了数据库连接池,导致没次执行完这个后,不知怎么的影响到线程处理后来的请求中的预处理操作不成功。
你看看你调的函数在处理返回的结果集是不是通用,按道理是不可以的,删除操作的结果只有一条一个字段,就是受影响的记录条数回复<aclass='referer'target='_blank'>@锋了:预处理还是不能得到结果执行多语句的问题我知道了,我改成会话了,试试看后续的预处理是不是还是有出问题。处理结果集的函数使用的是mysqlCAPI,是可以通用的。删除的记录可能有多条,也可能没有。不知到这是什么原因,就算删除delete这条,查询成功,后续的预处理查询也不返回结果,如果不处理这个查询的后都正常。难道是Notify表的设置问题吗,没怎么专门设置过的。。
唉,忙的忘了,服务端是一个多月前写的,最近要加了个功能,忘了这回事了。
<spanstyle="background-color:#F6F6F6;font-family:'CourierNew',Arial;font-size:9pt;line-height:1.5;">MySQL5.1支持在单个查询字符串中指定的多语句的执行。要想与给定的连接一起使用该功能,打开连接时,必须将标志参数中的CLIENT_MULTI_STATEMENTS选项指定给mysql_real_connect()。也可以通过调用mysql_set_server_option(MYSQL_OPTION_MULTI_STATEMENTS_ON),为已有的连接设置它。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。