Java 休眠:禁用为C3P0创建自动测试表
我可以访问远程Oracle数据库,但我只有读取权限。 我想使用C3P0作为Hibernate的连接池。 问题是C3P0试图创建一个自动测试表,但由于只读权限,它无法创建该表,并且失败Java 休眠:禁用为C3P0创建自动测试表,java,hibernate,c3p0,Java,Hibernate,C3p0,我可以访问远程Oracle数据库,但我只有读取权限。 我想使用C3P0作为Hibernate的连接池。 问题是C3P0试图创建一个自动测试表,但由于只读权限,它无法创建该表,并且失败 WARN [C3P0PooledConnectionPoolManager.java:944] An attempt to create an automatic test table failed. Create SQL: CREATE TABLE "c3p0_test_table" ( a CHAR(1) )
WARN [C3P0PooledConnectionPoolManager.java:944] An attempt to create an automatic test table failed. Create SQL: CREATE TABLE "c3p0_test_table" ( a CHAR(1) )
java.sql.SQLSyntaxErrorException: ORA-01031: insufficient privileges
我的C3P0参数如下所示:
<property name="connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.acquire_increment">3</property>
<property name="hibernate.c3p0.idle_test_period">0</property>
<property name="hibernate.c3p0.timeout">0</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.max_statements">0</property>
<property name="hibernate.c3p0.min_size">3</property>
org.hibernate.c3p0.internal.C3P0ConnectionProvider
3.
0
0
20
0
3.
如何禁用自动测试表的创建?您有c3p0配置,但您不知道,上面没有引用。默认情况下禁用自动测试表创建。在配置中的某个地方,
automaticTestTable
设置为true
c3p0在池初始化信息中转储其配置。检查您实际使用的池的配置,并将其与您期望的配置进行比较。然后,除了显示的hibernate配置之外,还要查找一个潜伏在那里的c3p0.properties
文件,并清除可能滑入其中的c3p0.automaticTestTable=true
从双数据库中选择sysdate。。。请添加此属性并重试。请参考链接,这是我的想法,但没有这样的参数…:(您是否检查了数据源的实际配置,并转储到池初始化的INFO上?