bra*_*ese 3 postgresql ubuntu purge
我发现在Ubuntu 10.04上有两个旧的PostgreSQL安装的残骸:
$ pg_lsclustersVersion Cluster Port Status Owner Data directory Log file
Use of uninitialized value in printf at /usr/bin/pg_lsclusters line 38.
8.4 main 5432 down /var/lib/postgresql/8.4/main /var/log/postgresql/postgresql-8.4-main.log
Use of uninitialized value in printf at /usr/bin/pg_lsclusters line 38.
9.1 main 5433 down /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log
$
Run Code Online (Sandbox Code Playgroud)
尝试执行基本功能会返回错误,例如:
createuser: could not connect to database postgres: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)
当我尝试启动数据库服务器时会出现更多信息:
$ sudo /etc/init.d/postgresql start
* Starting PostgreSQL 9.1 database server
* Error: The cluster is owned by user id 109 which does not exist any more
...fail!
$
Run Code Online (Sandbox Code Playgroud)
我的问题:如何完全删除两个群集并设置一个新群集?我已经尝试删除,清除和重新安装postgresql,遵循以下建议:https://stackoverflow.com/a/2748644/621762.现在pg_lsclusters显示存在任何集群,但是No such file or directory当我尝试错误仍然存在createuser,createdb或运行psql.我没做什么?
Cra*_*ger 15
首先,你联系到的答案是非常不安全的 - 手工编辑/etc/passwd?!?dselect其中一个apt通配符会做什么?疯狂的事情.你有问题我并不感到惊讶.
至于no such file or directory消息:你需要确保你有一个正在运行的PostgreSQL服务器("集群")才能使用管理命令createdb,因为它们建立了与服务器的连接.该No such file or directory消息告诉您服务器不存在或未运行.
这是发生了什么:
Ubuntu用于pg_wrapper管理多个并发的PostgreSQL实例.你遇到的问题确实存在pg_wrapper.
理想情况下,你只是习惯于pg_dropcluster摆脱不需要的集群.不幸的是,通过遵循不好的建议,听起来你已经让你的系统陷入了一种混乱的状态,其中PostgreSQL软件包已经安装了一半并且有点被破坏了.您需要修复安装,或者完全清理它.
我把它清理干净了.我建议:
pg_lsclusters列出没有数据库集群apt-get --purge remove postgresql\*- 这很重要/etc/postgresql//etc/postgresql-common/var/lib/postgresqluserdel -r postgresgroupdel postgresapt-get install postgresql-common postgresql-9.1 postgresql-contrib-9.1 postgresql-doc-9.1apt-get --purge由于您已删除用户ID等,步骤可能会失败.重新创建postgres用户ID useradd -r -u 109 postgres应允许您成功重新运行清除,然后删除用户.
这个答案并不是直接删除 postgres 实例,而是解决问题,
Error: The cluster is owned by user ...
Run Code Online (Sandbox Code Playgroud)
我在尝试启动指向通过不同容器(在不同主机上)生成的 postgres 数据目录的 docker 容器时遇到此错误。
该错误与目录所有权直接相关。就我而言,系统无法找到当前环境中某些 postgres 目录所拥有的用户。通过将这些目录重新拥有给正确的用户可以解决该问题。以下是一个示例映射(对我有用):
chown -R postgres:postgres /var/lib/postgresql
chown -R postgres:postgres /etc/postgresql
chown -R postgres:postgres /var/log/postgresql
chown -R postgres:postgres /var/run/postgresql
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6180 次 |
| 最近记录: |