【问题标题】:Why is Nhibernate SchemaExport unable to create a PostgreSQL database?为什么 Nhibernate SchemaExport 无法创建 PostgreSQL 数据库?
【发布时间】:2013-07-20 10:13:01
【问题描述】:

我有以下代码在 Nhibernate 中为数据库生成架构

new SchemaExport(configuration).Execute(true, true, false);

但是当针对 PostgreSQL 数据库运行时,我最终会收到以下错误

[NpgsqlException (0x80004005): FATAL: 3D000: database "dbname" does not exist] 

但是,如果我手动创建数据库,则会导出架构而不会出错。那么问题来了:为什么 Nhibernate SchemaExport 无法创建 PostgreSQL 数据库,而这却适用于 SQLite、MsSqlCe 和 MsSql Server 等其他数据库。

我搜索了在线文献,但找不到任何关于此问题的突出显示。

我正在使用 Nhibernate 3.3.1 和 PostgreSQL 9.2。

【问题讨论】:

  • 不应该是new SchemaExport(configuration).Create(true, true, false);吗?
  • 我觉得“database "dbname" does not exist”很清楚了吧?

标签: postgresql nhibernate


【解决方案1】:

您必须先创建数据库,然后才能在数据库中创建表和其他对象。

在 PostgreSQL 连接上使用 CREATE DATABASE 语句执行此操作 - 在您的应用程序中,或通过 psqlPgAdmin-III

PostgreSQL 不支持按需/首次访问创建数据库。也许这就是您的工具所期望的?

如果您认为数据库确实存在并且您可以在其他工具中看到它,那么您可能没有连接到同一个数据库服务器?检查服务器地址和端口。

【讨论】:

  • 我现在明白了。以为我犯了一个错误,即使我看不到哪里。任何关于“PostgreSQL 不支持创建数据库...”的文献的指针?
  • @CallMeKags 不是我的头顶/快速搜索。在架构上很难做到,因为 PostgreSQL 后端一旦启动就无法切换数据库,而且CREATE DATABASE 需要连接到现有数据库。邮件列表的某个地方会有更多讨论,但我无法通过快速搜索找到它。
猜你喜欢
  • 2011-08-31
  • 1970-01-01
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
  • 2015-03-17
  • 1970-01-01
相关资源
最近更新 更多