0

我在 MVC3 Mono 应用程序上使用 pgProvider,并且在 Windows Postgres 9.2 上没有问题。我正在迁移到我的生产 Linux/Mono 环境,并在尝试访问提供程序时收到错误:

"42704: language "plpgsql" does not exist"

我在 CentOS 6.3 上使用 postgreSQL 8.4

我查看了一些信息,然后运行了以下内容:

createlang -d dbname plpgsql

当我再次运行它时,它确认数据库已经存在。

我重新启动了 postgresql 和我的应用程序。但是,我仍然收到上述错误。

有没有人知道为什么我仍然会收到“plpgsql 不存在——安装后”的任何信息?

4

1 回答 1

1

一般来说,这种错误表明某些事情与您的预期不符,您需要挑战您的假设。

请注意,语言不需要重新启动数据库服务器即可在任何版本的 PostgreSQL 上生效。另请注意,PostgreSQL 中允许的语言是 per-db 目录条目(与用户和角色不同,语言不是集群全局的)。

因此,在解决此问题时,您需要从以下内容开始:

  1. 这是正确的数据库吗?合适的服务器?

  2. 我的应用程序是否连接到我认为的同一个数据库/服务器?

鉴于 createlang 在您运行它后确认该语言存在,这不会是 PostgreSQL 引发虚假错误的问题。相反,它必须是您所做的更改不影响您的应用程序正在使用的数据库的问题。

于 2013-06-01T01:12:09.200 回答