【发布时间】:2018-07-12 22:10:09
【问题描述】:
我有一个使用 Hibernate 和 PostgreSQL 的应用程序,我使用 Maven 将其编译为 WAR 并将其部署到 Tomcat 8.0,有时我会遇到以下问题 这个错误:
“用户缺少权限或找不到对象:TABLE_NAME”。
很明显,这个问题的答案总是“检查该用户的权限,并检查表/数据库是否存在”。
这绝对不是问题,因为这偶尔会发生,即我的应用程序工作正常,当我部署它的新版本时,有时在部署后它会抛出此错误。
我总是使用 Jenkins 部署我的应用程序,并且部署到 Tomcat 是成功的,该应用程序正在运行,但是如果我调用一个消耗数据库服务的操作,它就会因为这个错误而变得混乱。这会在 2 到 3 次干净部署后清除(即我停止 Tomcat,清理目录,启动它并使用相同版本的代码再次使用 Jenkins 运行部署)。
在干净的部署之后它并没有解决问题仍然很奇怪。即使重新启动整个服务器(不是 Tomcat,Windows 服务器),它仍然会发生。
我读到的关于可能原因的最接近的解释是,有时它可以创建到数据库的 ghost 连接,而当它尝试查询某些内容时却无法查询,因为它并没有真正连接.
数据库和Tomcat在同一台服务器上,所以应用程序指向localhost来连接数据库。我不认为这是相关的,因为它也发生在数据库位于不同服务器中的 Quality Rnvironment 中。
我关于数据库的配置文件是这样的:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<alias name="appDataSource" alias="jpaDataSource" />
<alias name="jpaTransactionManager" alias="appTransactionManager" />
<bean id="appDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.postgresql.Driver" />
<property name="url" value="${postgre.url}" />
<!-- jdbc:postgresql://127.0.0.1:5432/DEV_DATABASE -->
<property name="username" value="${postgre.username}" />
<property name="password" value="${postgre.password}" />
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="jpaDataSource" />
<property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
<property name="packagesToScan" value="${persistence.jpa.packagesToScan}" />
<property name="jpaProperties">
<props>
<prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
<prop key="hibernate.jdbc.use_get_generated_keys">true</prop>
</props>
</property>
<property name="sharedCacheMode" value="ENABLE_SELECTIVE" />
<property name="validationMode" value="NONE" />
</bean>
</beans>
有人知道这可能是什么吗?
【问题讨论】:
-
这不是 Postgres 错误信息,这是 HSQLDB 错误信息
标签: java postgresql hibernate tomcat maven-tomcat-plugin