PostgreSQL:使用CreateLang后,我仍然收到错误“42704:language”plpgsql“不存在”

时间:2013-04-30 14:30:42

标签: postgresql plpgsql postgresql-8.4

我在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不存在 - 安装后?”

1 个答案:

答案 0 :(得分:1)

一般来说,这种错误表明事情并不像你期望的那样,你需要挑战你的假设。

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

因此,在对此进行故障排除时,您需要从:

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

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

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