【发布时间】:2013-11-08 01:27:20
【问题描述】:
我正在使用 Spring JDBC + C3P0。我想将'sql_mode'变量设置为空字符串''。
首先我尝试在 JDBC url 中设置它:
DataSource dataSource = new DriverManagerDataSource(
"jdbc:mysql://127.0.0.1/test?sessionVariables=sql_mode=''",
"root", "password");
但它不起作用。
所以我想知道是否有办法在获取连接后立即执行一些语句,例如“SET sql_mode=''”。
谢谢。
【问题讨论】:
-
在下面添加到 samlewis 的建议,如果您想要的只是一些初始化 sql,您可以使用已经实现的 ConnectionCustomizer,并将您的初始化 SQL 添加到您的配置中。请参阅 mchange.com/projects/c3p0/#user_extensions_to_configurations 和 github.com/swaldman/c3p0/blob/master/src/java/com/mchange/v2/… 这是最近添加到库中的内容,如果需要,请使用 c3p0-0.9.5-pre5 或更高版本。
-
@SteveWaldman 这个定制器好像只支持一个sql?
-
是的。它主要用作使用用户定义的配置扩展的示例(并且当人们抱怨缺少 initSql 配置时,它也可以用来转移烦恼,某些池提供并且有时会要求该配置)。很容易修改以分号拆分。或者,我可以尝试添加对复合键的支持,以便您可以定义 initSql.statement1、initSql.statement2 等。