MySQL错误:批插入语句“allowMultiQueries=true”不工作?

w8f9ii69  于 2023-01-16  发布在  Mysql
关注(0)|答案(1)|浏览(977)

我尝试使用allowMultiQueries=true在MySQL模式的Oceanbase数据库中添加一条用于批量导入的语句,但是我得到一个错误:
更新数据库时出错。原因:java.sql.SQLException
###URL OpLogDetailDao.xml中可能存在错误]
###错误可能涉及默认参数Map
###设置参数时出错
###SQL:将值(?,?,?,?,?,?,?,?,?),(?,?,?,?,?,?,?,?,?,?,?)插入操作日志详细信息(操作详细信息标识,表代码,数据标识,操作日志标识,旧值,新值,文件标识,操作类型);
###原因:java. sql. SQLException;空;嵌套异常为java. sql. SQLException
正常情况下,此语句在MySQL中应该可以正常工作,但在Oceanbase MySQL兼容模式下不能正常工作,环境是最新版本的Oceanbase Community Edition和CentOS。
如何解决此错误?

zpqajqem

zpqajqem1#

在MySQL中,不能执行包含多个SQL语句的预准备查询。
https://dev.mysql.com/doc/refman/en/prepare.html
文本必须代表单个语句,而不是多个语句。
https://dev.mysql.com/doc/c-api/en/c-api-multiple-queries.html
多语句和结果功能只能用于mysql_real_query()mysql_query()。它们不能用于预准备语句接口。预准备语句处理程序定义为只能处理包含单个语句的字符串。
我知道您使用的是Java,而不是C,但是任何客户机语言甚至存储过程都存在多查询语句和预准备语句之间的不兼容性。
无论如何,您不需要使用多查询。即使您不使用参数化查询,使用多查询也没有实际好处。
只需在单独的调用中一次执行一个查询,然后就可以使用带参数的预准备查询。
您仍然可以像现在这样在一个INSERT语句中插入多行,这不需要多查询。

相关问题