Java PostgreSQL-用户缺少权限或找不到对象
我有一个使用Hibernate和PostgreSQL的应用程序,我用Maven将其编译成WAR,并将其部署到Tomcat8.0,有时我会遇到以下问题: 此错误: “用户缺少权限或找不到对象:表名称” 显然,这个问题的答案总是“检查该用户的权限,并检查表/数据库是否存在” 这绝对不是问题所在,因为这种情况偶尔会发生,也就是说,我的应用程序工作正常,当我部署新版本时,有时在部署之后,它会抛出此错误 我总是使用Jenkins部署我的应用程序,并且部署到Tomcat是成功的,应用程序正在工作,但是如果我调用使用数据库服务的操作,就会出现此错误。在它上进行2到3次clean部署后(即,我停止Tomcat,清理目录,启动它,并使用相同版本的代码再次运行deploywithjenkins),这将被清除 不过,非常奇怪的是,在干净的部署之后,它并没有解决问题。即使在重新启动整个服务器(不是Tomcat,Windows服务器)之后,这种情况仍然会发生 关于可能的原因,我读到的最接近的解释是,有时它可以创建到数据库的幽灵连接,而当它试图查询某些东西时,它不能,因为它没有真正连接 数据库与Tomcat位于同一台服务器上,因此应用程序指向localhost以连接到数据库。我认为这与此无关,因为它也发生在数据库位于不同服务器的高质量环境中 我的数据库配置文件如下:Java PostgreSQL-用户缺少权限或找不到对象,java,postgresql,hibernate,tomcat,maven-tomcat-plugin,Java,Postgresql,Hibernate,Tomcat,Maven Tomcat Plugin,我有一个使用Hibernate和PostgreSQL的应用程序,我用Maven将其编译成WAR,并将其部署到Tomcat8.0,有时我会遇到以下问题: 此错误: “用户缺少权限或找不到对象:表名称” 显然,这个问题的答案总是“检查该用户的权限,并检查表/数据库是否存在” 这绝对不是问题所在,因为这种情况偶尔会发生,也就是说,我的应用程序工作正常,当我部署新版本时,有时在部署之后,它会抛出此错误 我总是使用Jenkins部署我的应用程序,并且部署到Tomcat是成功的,应用程序正在工作,但是如果我
<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数据库的那个 标签是:
<jdbc:embedded-database id="appDataSource" />
因为这是一个空的实体模型数据库,它会引发“用户缺少权限或找不到对象”的错误,因为该表在此空数据库中不存在
删除此项后,问题得到解决,它现在始终连接到正确的数据库。这不是Postgres错误消息,而是HSQLDB错误消息