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

标签 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()

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

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

最佳答案

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

关于mysql - 如何使用 JDBC 更改模式以连接到 Grails 中的 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26470394/

相关文章:

php - 将 URL 链接写入 Elgg 数据库

mysql - 有时我无法在离线时使用 node.js 连接到 mysql 数据库,直到我在线,其他时候它就可以工作,为什么?

javascript - 使用 Node.js 连接到 MySQL 数据库

java - H2 数据库出现问题可能已经在使用中

database - 使用 executeUpdate() 进行 Grails 悲观锁定

mysql - 无法添加或更新子行 : a foreign key constraint fails

java - 如何更改主键自动递增,以便在删除行时不会跳过值

java - 插入新行,并通过简单计算增加最大值(并发问题)

grails - 建立一对多对一的关系

grails - Grails 中的 Controller 默认是事务性的吗?