【问题标题】:PSQLException: FATAL: database "mydb" does not existPSQLException:致命:数据库“mydb”不存在
【发布时间】:2013-05-28 07:47:53
【问题描述】:

我的应用程序尝试使用 Jdbc 驱动程序版本连接到 PostgreSQL 时遇到一个奇怪的问题:8.4-702.jdbc4

它似乎找不到它所在的 persistence.xml 中定义的数据库。

错误:

[INFO] Caused by: org.postgresql.util.PSQLException: FATAL: database "mydb" does not exist
[INFO]  at org.postgresql.core.v3.ConnectionFactoryImpl.readStartupMessages(ConnectionFactoryImpl.java:464)
[INFO]  at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:112)
[INFO]  at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
[INFO]  at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125)
[INFO]  at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
[INFO]  at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22)
[INFO]  at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:30)
[INFO]  at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
[INFO]  at org.postgresql.Driver.makeConnection(Driver.java:393)
[INFO]  at org.postgresql.Driver.connect(Driver.java:267)
[INFO]  at java.sql.DriverManager.getConnection(DriverManager.java:579)
[INFO]  at java.sql.DriverManager.getConnection(DriverManager.java:221)
[INFO]  at org.postgresql.ds.common.BaseDataSource.getConnection(BaseDataSource.java:89)
[INFO]  at org.postgresql.ds.common.BaseDataSource.getConnection(BaseDataSource.java:72)
[INFO]  at org.apache.shiro.realm.jdbc.JdbcRealm.doGetAuthenticationInfo(JdbcRealm.java:215

但是我可以在 shell 中做到这一点而不会出现问题:

$ psql -U postgres -h 192.168.145.128

persistence.xml

  <properties>
     <property name="hibernate.hbm2ddl.auto" value="update"/>
     <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://192.168.145.128:5432/mydb" />
     <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
     <property name="javax.persistence.jdbc.user" value="postgres" /> 
     <property name="javax.persistence.jdbc.password" value="postgres" /> 
  </properties>

可能是什么问题?

【问题讨论】:

  • 您的 psql 命令对“mydb”一无所知 - 它只是连接到默认数据库。尝试连接到 mydb 或查看它是否存在(我想那是“\l”,这里没有 Postgresql)
  • 您的 persistence.xml 文件建议它应该连接到的数据库名为 magick,但您的 STDERR 建议它正在尝试连接到一个名为 mydb 的数据库。除非您在复制/粘贴中故意更改它,否则它似乎甚至没有使用该配置。

标签: java sql persistence persistence.xml


【解决方案1】:

在我的情况下,这是因为提供了错误的用户名和密码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    • 2013-07-12
    相关资源
    最近更新 更多