如何使用JDBC更改模式以连接到Grails中的MySQL?

时间:2014-10-20 16:26:35

标签: mysql spring grails jdbc groovy

我在Grails应用程序中使用spring bean与SQL进行交互。我的resources.groovy文件如下所示:

beans = {
    groovySql(groovy.sql.Sql, ref('dataSource')) {}
}

我的DataSource.groovy文件已设置数据源(并命名为dataSource)。

使用的JDBC连接字符串看起来像这样:

jdbc:mysql://my.domain.com/Schema_Number_One

当我这样做时,一切正常。但是,我现在需要使用的不仅仅是该服务器上的一个架构。所以我将连接字符串改为:

jdbc:mysql://my.domain.com/

我认为这样会很好,我可以发出像USE Schema_Number_Two这样的查询来切换。但是出了点问题。

当我尝试运行此代码时:

def query = "USE Schema_Number_Two"
groovySql.execute(query)
groovySql.commit()

我在控制台中收到以下错误:

连接是只读的。不允许导致数据修改的查询。

所以......显然它将USE语句视为写入查询?我的下一个想法是试图通过这样做来欺骗它认为这是一个只读语句:

def query = "USE Schema_Number_Two; SELECT 1"
groovySql.execute(query)
groovySql.commit()

虽然该查询确实执行没有错误,但它并不坚持。下一个查询返回了一条错误消息,指出没有指定数据库。

我还尝试在我在控制器中调用此方法之前添加@Transactional(readOnly=false),但这似乎没有任何影响。我可以确认我正在使用Grails Transactional注释。

1 个答案:

答案 0 :(得分:1)

据我所知,没有办法完成我在这里尝试做的事情。我最不得不做的只是定义单独的数据源。