我在 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()
虽然该查询执行时确实没有错误,但它并没有坚持下去。下一个查询返回了一些错误消息,表明没有指定数据库。
我还尝试在 Controller 中调用的方法之前添加 @Transactional(readOnly=false)
,但这似乎没有任何影响。我可以确认我正在使用 Grails Transactional 注释。
最佳答案
据我所知,没有办法完成我在这里尝试做的事情。我最终要做的只是定义单独的数据源。
关于mysql - 如何使用 JDBC 更改模式以连接到 Grails 中的 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26470394/