我在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不存在 - 安装后?”
答案 0 :(得分:1)
一般来说,这种错误表明事情并不像你期望的那样,你需要挑战你的假设。
请注意,不的语言需要重新启动数据库服务器才能在任何版本的PostgreSQL上生效。另请注意,PostgreSQL中允许使用的语言是每db目录条目(与用户和角色不同,语言不是集群全局的。)
因此,在对此进行故障排除时,您需要从:
开始这是正确的数据库吗?合适的服务器?
我的应用程序是否连接到我认为的同一个数据库/服务器?
鉴于createlang在运行之后确认该语言存在,这不会成为PostgreSQL引发虚假错误的问题。相反,您所做的更改不会影响应用程序正在使用的数据库,这一定是个问题。