Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从Groovy运行多个SQL语句_Mysql_Groovy - Fatal编程技术网

Mysql 从Groovy运行多个SQL语句

Mysql 从Groovy运行多个SQL语句,mysql,groovy,Mysql,Groovy,我在Groovy的一次激活中运行多个SQL语句时遇到问题 sql = Sql.newInstance("jdbc:mysql://localhost/", "usre", "pass", "com.mysql.jdbc.Driver") sql.execute("USE foo; "); // this works sql.execute("USE foo; USE foo;"); // this fails miserably 我得到的错误是“您的SQL语法有错误”。给出了什么?问题是因为g

我在Groovy的一次激活中运行多个SQL语句时遇到问题

sql = Sql.newInstance("jdbc:mysql://localhost/", "usre", "pass", "com.mysql.jdbc.Driver")
sql.execute("USE foo; "); // this works
sql.execute("USE foo; USE foo;"); // this fails miserably

我得到的错误是“您的SQL语法有错误”。给出了什么?

问题是因为groovy使用JDBC的Statement.execute(),它需要on语句。下面是Groovy的Sql的一个替换类,它可以解决这个问题(但缺乏功能)


Groovy开发人员之一Paul King就我打开的问题发表了评论,您可以告诉mysql允许多个语句(其他RDBMS不一定支持这一点)

您只需将以下jdbc url参数添加到连接字符串中即可

从文档中:

允许使用“;”划界 在一条语句中执行多个查询 (真/假),默认为“假”

例如:

Sql.newInstance("jdbc:mysql://localhost?allowMultiQueries=true", "usre", "pass", "com.mysql.jdbc.Driver")

@ajreal-我会解决这个问题。。。但为什么会发生这种事?创建了一个问题-@ajreal-这不起作用。我想使用
use
语句,后跟一组语句。我可以解析SQL,并将模式前缀添加到每个语句中,但我希望它们只是等待它们修复错误,假设它很快就会发生。我猜groovy还不支持mysql的多查询,比如php只支持mysqli的多查询,而不支持旧的mysql。可以考虑将多个查询封装到存储过程或function@ajreal-我希望我的解决方案(见下文)在某些文本字段中使用分号作为数据时不起作用。
Sql.newInstance("jdbc:mysql://localhost?allowMultiQueries=true", "usre", "pass", "com.mysql.jdbc.Driver")