Java 休眠:禁用为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) )

我可以访问远程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) )
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

  • 检查您的项目是否有c3p0.properties或mchange-commons.properties, 这些文件可能包含automaticTestTable属性

  • jinfo$pid,检查是否有jvm属性“automaticTestTable”


  • 从双数据库中选择sysdate。。。请添加此属性并重试。请参考链接,这是我的想法,但没有这样的参数…:(您是否检查了数据源的实际配置,并转储到池初始化的INFO上?