Mysql 从Groovy运行多个SQL语句
我在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
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")