开发者社区> 问答> 正文

Jdbc查询设置 allowMultiQueries为true/false时底层?报错

Jdbc Url 中设置allowMultiQueries=true时,可以允许一次执行多条sql(通过分号分割),如下所示:

String url = "jdbc:mysql://localhost:3306?allowMultiQueries=true";
String sql = "select 'hello';select 'world'";
stmt.execute(sql);

否则就会报错.

当调试源代码想找出 allowMultiQueries=true/false时到底哪里有不同,发现当执行完下面的语句后,

//所属:void java.net.SocketOutputStream.socketWrite(byte[] b, int off, int len)
socketWrite0(fd, b, off, len);

会有不同的结果.

若设置为true,mysql query log中能看到如下的SQL输出:

23 Query	select 'hello';
23 Query	select 'world'

若设置为false的话,就没有上述sql输出.

奇怪的是这两种情况下参数都一样,结果却不同. 不知何故,可有人知晓?

展开
收起
爱吃鱼的程序员 2020-06-14 16:10:40 1450 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    见博客: http://my.oschina.net/zhuguowei/blog/411853

    这个已经回答的很清楚了。总结下,就是multiquery就是个mysql对外提供的连接api里的一个参数。有些语言或客户端实现是写死的,硬编码的,没法改,改了也没效。
    2020-06-14 16:10:58
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载