Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PostgreSQL-用户缺少权限或找不到对象_Java_Postgresql_Hibernate_Tomcat_Maven Tomcat Plugin - Fatal编程技术网

Java PostgreSQL-用户缺少权限或找不到对象

Java PostgreSQL-用户缺少权限或找不到对象,java,postgresql,hibernate,tomcat,maven-tomcat-plugin,Java,Postgresql,Hibernate,Tomcat,Maven Tomcat Plugin,我有一个使用Hibernate和PostgreSQL的应用程序,我用Maven将其编译成WAR,并将其部署到Tomcat8.0,有时我会遇到以下问题: 此错误: “用户缺少权限或找不到对象:表名称” 显然,这个问题的答案总是“检查该用户的权限,并检查表/数据库是否存在” 这绝对不是问题所在,因为这种情况偶尔会发生,也就是说,我的应用程序工作正常,当我部署新版本时,有时在部署之后,它会抛出此错误 我总是使用Jenkins部署我的应用程序,并且部署到Tomcat是成功的,应用程序正在工作,但是如果我

我有一个使用Hibernate和PostgreSQL的应用程序,我用Maven将其编译成WAR,并将其部署到Tomcat8.0,有时我会遇到以下问题: 此错误:

“用户缺少权限或找不到对象:表名称”

显然,这个问题的答案总是“检查该用户的权限,并检查表/数据库是否存在”

这绝对不是问题所在,因为这种情况偶尔会发生,也就是说,我的应用程序工作正常,当我部署新版本时,有时在部署之后,它会抛出此错误

我总是使用Jenkins部署我的应用程序,并且部署到Tomcat是成功的,应用程序正在工作,但是如果我调用使用数据库服务的操作,就会出现此错误。在它上进行2到3次clean部署后(即,我停止Tomcat,清理目录,启动它,并使用相同版本的代码再次运行deploywithjenkins),这将被清除

不过,非常奇怪的是,在干净的部署之后,它并没有解决问题。即使在重新启动整个服务器(不是Tomcat,Windows服务器)之后,这种情况仍然会发生

关于可能的原因,我读到的最接近的解释是,有时它可以创建到数据库的幽灵连接,而当它试图查询某些东西时,它不能,因为它没有真正连接

数据库与Tomcat位于同一台服务器上,因此应用程序指向localhost以连接到数据库。我认为这与此无关,因为它也发生在数据库位于不同服务器的高质量环境中

我的数据库配置文件如下:

 <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错误消息