连接到PostgreSQL失败与semctl …无效的参数

我运行initdb,试图用createuser -sdrP myuser创build一个新的超级用户

我得到的错误是

createuser: could not connect to database postgres: FATAL: semctl(3342342, 3, SETVAL, 0) failed: Invalid argument

在互联网上的任何地方我都找不到任何东西。 我试过卸载,删除数据目录,并再次尝试,但没有骰子。 我在我的智慧结束。

我正在运行FreeBSD 9.2-RELEASE-p10的监狱里面。 是的,我已经设置了allow.sysvipc = 1

PostgreSQL最有可能找不到之前创build的信号量。 有可能另一个(不相关的)进程正在删除信号(可能是一个调用ipcrm的脚本)。

启动PostgreSQL后,使用ipcs -s立即列出sempahores,然后在遇到问题时再次列出。 除非另一个进程正在主动删除信号量,而不是在PostgreSQL启动之后运行ipcs -stesting,否则您应该可以通过比较两个sempahore列表来确定PostgreSQL信号量是否实际上被删除。

这并不能告诉你哪个(根)进程是罪魁祸首,但它确实指向了正确的方向。 如果运气好的话,违规stream程就是一个脚本,在这种情况下,您可以search执行ipcrm调用的根执行脚本。