coocood/qbs

执行多次qbs.Exec后报1461错误

elephantsaunter opened this issue · 3 comments

请教,在执行多次qbs.Exec(sql)后,会报这个错误
1461: Can' t create more than max_prepared_stmt_count statements (current value: 16382)
数据库显示:
| Com_stmt_close | 456 |
| Com_stmt_execute | 132936 |
| Com_stmt_fetch | 0 |
| Com_stmt_prepare | 91187 |
请问,要在哪进行com_stmt_close关闭

你是不是把参数直接放到query里了,不然不会那么多prepared statement.
应该是q.Exec("SELECT * FROM user WHERE name=?", name)
而不是q.Exec("SELECT * FROM user WHERE name="+name)

是的,q.Exec(sql)中sql参数,是在其它模块组装好的。
是一串string
我这种调用方式,怎样来避免这个问题?

把不变的sql语句和参数分开,参数放在后面的args里。
如果你不能改其他模块,那就没办法了。
正规用法一定是要把语句和参数分开的。

On Sat, Jan 25, 2014 at 3:59 PM, huyan notifications@github.com wrote:

是的,q.Exec(sql)中sql参数,是在其它模块组装好的。

是一串string

我这种调用方式,怎样来避免这个问题?


Reply to this email directly or view it on GitHubhttps://github.com//issues/43#issuecomment-33283612
.