0

在运行我的测试时,我正在尝试将 PostgreSQL 与 Spring、Maven 和 Hibernate 一起用作内存中的 SGBD。

我得到的错误是数据库不存在。

Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (FATAL: database "test" does not exist)

有没有办法指定 PostgreSQL 通过休眠在内存中创建自己的表,或者提供一个可以构建数据库的 sql 查询?

以下是我与 HYPERSONIC_IN_MEMORY 一起使用的一些属性并且工作得很好,我怎样才能将其应用于 PostgreSQL?

<properties>
    <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
    <property name="hibernate.hbm2ddl.auto" value="create" />
</properties>

这是我第一次使用 PostgreSQL,任何帮助将不胜感激。

4

1 回答 1

2

如果您连接到一个不存在的数据库,您似乎希望 PostgreSQL 创建一个数据库。它不支持这样做。

是的,您可以“为它提供一个可以构建数据库的 sql 查询”……但是您需要连接到数据库才能发出适当的CREATE DATABASE命令。

尝试在单元测试框架中使用预类或脚本来建立到 PostgreSQL 的 JDBC 连接并创建测试数据库。或者将其作为单元测试框架的功能请求,或者作为 Hibernate 的功能请求。请参阅此论坛主题以进行先前的讨论。

一般建议是让 ORM更新现有模式,而不是创建新模式,或者使用预测试代码删除并重新创建数据库。

至于“in RAM”部分......如果这是一个速度问题,请参阅Optimize PostgreSQL for fast testing

于 2012-11-14T00:48:38.360 回答