启动 Debian 服务器后,我收到此错误:
[ASSERT] PostgreSQL Cluster 14 的断言失败。
我的 PostgreSQL 处于活动状态(我通过此命令检查了这一点:)systemctl status [email protected]
我用谷歌搜索并找到这个帖子: 启动时无法启动 PostgreSQL Cluster 10-main 但我一切都很好:
我用谷歌搜索了更多,但找不到任何对我有用的东西。
答案1
您应该检查集群配置文件的路径以获得适当的权限
$ ls -l /etc/postgresql/14/main/postgresql.conf
-rw-r--r-- 1 postgres postgres 1005 Oct 3 16:07 /etc/postgresql/14/main/postgresql.conf
在 Debian 上,systemd 服务单元包含以下内容:/lib/systemd/system/[email protected]
[Unit]
Description=PostgreSQL Cluster %i
AssertPathExists=/etc/postgresql/%I/postgresql.conf
RequiresMountsFor=/etc/postgresql/%I /var/lib/postgresql/%I
基本上错误消息告诉你/etc/postgresql/%I/postgresql.conf
找不到。%I
应该插入到14/main
,因此 systemd 在读取文件时遇到麻烦/etc/postgresql/14/main/postgresql.conf
。
答案2
就我而言,错误“断言作业失败”[电子邮件受保护]。”是由于尝试启动错误的服务名称(postgresql@14):当我使用正确的名称(postgresql@14-main)时,它会按预期工作。也许您启用了错误的服务在启动时启动。
答案3
我对 SystemD 有一种极度仇恨的关系——有几张针对它的罚单,而 Lennard Poetering 只是耸耸肩……
也就是说:问题是我我的case 看起来很奇怪:client-pg15-01
SystemD 在看到空格破折号等时会对服务名称和文件名进行替换等,并且存在可怕的规则(是的,我很恼火,因为与桌面相比,这对于服务器操作员来说很烦人) /laptop jockey)所以冗长的答案是不要为此混淆正则表达式,而是给出简单的名称,例如clientnamepg15number01
没有任何可能混淆服务名称的东西