数据库教程:mysql多次调用存储过程的问题分享

上述就是数据库技术:mysql多次调用存储过程的问题分享的全部内容,如果对大家有所用处且需要了解更多关于mysql数据库学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)! 问题是这样的,在直接使用mysqlcapi构建应用的时候,一个连接只能执行一次存储过程,不管怎样free再次利用这个连接的时候就会出现不能执行qurry的提示,我想,这么大型的软件不会存在这样的基础性问题吧,毕竟大多数的adodb都是基于capi的,难道所有的软件都无法进行连接缓存?
别说,接触到这类问题的人还真不多,大多数的连接池都写好了,谁会去直接构建连接进行操作呢,所以baidugoogle基本都没有结果,今天回头来解决这个问题,突然就有了突破,找到了一篇文章《对Mysql的CAPI调用存储过程的问题及解决方法分析》,正是我的问题。
作者分析的挺复杂了,其实我们一般只用mysql_query、mysql_use_result等几个函数,问题的症结在于当执行一个存储过程的时候,数据库返回的是多个数据集合,即使只有一个数据集合,他也会有一个空集合用于结束一次回话,作者骂他变态,其实不然,可能作者考虑到的只是一般的请求,mysql是给所有用户使用的,说不能真有变态的人把图片文件等等直接保存在mysql字段里面,那么回复就不可能一次完成,需要多此网络交互,那么所有的交互肯定需要一个结束符号,并且存储过程本来就可以返回多个数据集合,如果他在cpai中只做一个结果己处理就允许下一次全新的请求,那么对于同一连接,在mysql服务断其实还有没有发送完成的数据,这个时候他安全的做法就是不接受任何新的请求,直到数据发送完全,或者连接关闭,不然,mysql协议解析就会出现问题,下次发送就会出现黏包或者丢包,所以他的做法是完全正确的,即使只有一个结果集合,也需要当前会话内的通讯(比如mysql_next_result)确认完毕,然后结束本次请求,这个时候服务端其实没有数据了,但是这个过程是不能省略的,然后在不关闭连接的情况下就可以进行全新的请求了。
所以

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/910210.html

(0)
上一篇 2021年10月24日
下一篇 2021年10月24日

精彩推荐