我可以访问远程 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>
如何禁用自动测试表的创建?
最佳答案
你有你不知道的c3p0配置,上面没有引用。默认情况下禁用自动测试表创建。在您的配置中的某个位置,您将 automaticTestTable
设置为 true。
c3p0 在池初始化时将其配置转储到 INFO。检查您实际使用的池的配置,并将其与您期望的配置进行比较。然后除了您显示的 hibernate 配置之外,查找潜伏的 c3p0.properties
文件,并删除可能滑入其中的 c3p0.automaticTestTable=true
。
关于java - Hibernate:禁用为 C3P0 创建自动测试表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28475238/