usr*_*ΛΩΝ 11 mysql sql sql-server oracle
我们的应用程序适用于MySQL,MS SQL Server和Oracle DB.
我们的C3P0配置使用该preferredTestQuery选项来测试连接性.这是我们的Spring配置
<b:bean id="phoenixDataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<b:property name="driverClass" value="${database.driver}"/>
<b:property name="jdbcUrl" value="${database.connectionURL}"/>
<b:property name="user" value="${database.user}"/>
<b:property name="password" value="${database.password}"/>
<b:property name="initialPoolSize"><b:value>${database.initialPoolSize:10}</b:value></b:property>
<b:property name="minPoolSize"><b:value>${database.minPoolSize:1}</b:value></b:property>
<b:property name="maxPoolSize"><b:value>${database.maxPoolSize:25}</b:value></b:property>
<b:property name="acquireRetryAttempts"><b:value>${database.acquireRetryAttempts:10}</b:value></b:property>
<b:property name="acquireIncrement"><b:value>${database.acquireIncrement:5}</b:value></b:property>
<b:property name="idleConnectionTestPeriod"><b:value>${database.idleConnectionTestPeriod:60}</b:value></b:property>
<b:property name="maxIdleTime"><b:value>${database.maxIdleTime:10800}</b:value></b:property>
<b:property name="maxConnectionAge"><b:value>${database.maxConnectionAge:14400}</b:value></b:property>
<b:property name="preferredTestQuery"><b:value>${database.preferredTestQuery:SELECT 1}</b:value></b:property>
<b:property name="testConnectionOnCheckin"><b:value>${database.testConnectionOnCheckin:false}</b:value></b:property>
<b:property name="testConnectionOnCheckout"><b:value>${database.testConnectionOnCheckout:false}</b:value></b:property>
</b:bean>
Run Code Online (Sandbox Code Playgroud)
SELECT 1对于Oracle没有有效查询,但SELECT 1 FROM DUAL除非我们创建DUAL对象,否则它不是SQL Server的有效查询.
非常简单的问题:是否有任何SELECT或只是无害的查询可以在所有平台上普遍用于测试连接?
我可以在Oracle安装的属性文件中覆盖database.preferredTestQuery,但我仍然想知道是否有可行的通用解决方案.
[编辑]连接检查由C3P0独立于我的代码进行.当查询失败时(如果启用了调试日志记录),它会在日志中写入错误.我的代码没有使用该查询,它是C3P0配置的一部分,因为该工具自行检查是否建立了连接(因为这是我的理解).我不能,如果 - 否则那么.目前,仅通过配置覆盖Oracle安装的查询是可行的.
顺便说一句,即使我可以通过代码测试方言实现,问题也可以改为"为了测试连接性,我可以运行通用查询,还是必须运行特定于DBMS?" 或类似的东西
| 归档时间: |
|
| 查看次数: |
938 次 |
| 最近记录: |