PostgreSQL:Problem running post-install step. The database cluster initialisation failed. 解决方法。

安装PG时报上述错误。
PostgreSQL:Problem running post-install step. The database cluster initialisation failed. 解决方法。_第1张图片
网上搜索出许多解决方案比较常见的有:字符集,用户权限,等等。均已排除,而且因为很容易搜到,所以不再赘述。我遇到的问题,最先发现的解决方法是:只要使用缺省的程序目录和数据目录就一切OK。

但是由于磁盘分配的需要,以及数据库和应用程序分离的需要,往往需要自定义数据目录。

方法思路为先在缺省路径中完成软件安装,然后再迁移数据目录。步骤如下:

  1. 创建新的数据目录,修改所属用户和组,修改权限
    sudo mkdir /home/data
    sudo chown -R postgres:postgres data
    sudo chmod 700 data

  2. 停止正在运行的PG服务
    su (切换到超户)
    su - postgres (切换到postgres用户)
    pg_ctl stop (停止PG服务)

  3. 重新初始化数据库,并指定新目录作为数据目录
    ./initdb –encoding=UTF-8 –local=zh_CN.UTF8 –username=postgres –pwprompt –pgdata=/home/data/

  4. 修改/etc/profile文件中的PGDATA环境变量
    PG_HOME=/opt/PostgreSQL/9.5
    PGDATA=/home/data
    PATH= PGHOME/bin: PATH
    PGLIB=$PG_HOME/lib
    export PG_HOME PGDATA PATH PGLIB

  5. 修改数据库配置文件
    修改postgresql.conf文件, data_directory = ‘/home/data’

  6. 删除原有数据目录,重新启动PG服务程序
    rm -rf /opt/PostgreSQL/data
    pg_ctl restart

  7. 登录到psql中查看数据目录
    show data_directory;


(windows中相对简单)
1. 停止PG服务。
2. 修改注册表。
对应键值位置在”HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\postgresql-x64-9.1\ImagePath”,将“-D”后的目录名修改为新的数据目录位置即可,如果目录路径中含有空格,需要用引号引起。
3. 重启PG服务。


【附】删除PG重新安装的步骤:
1. 卸载软件:在$PG_HOME安装目录中执行uninstall-postgresql
2. 删除安装记录(否则重新安装,图形化界面会告诉你“An existing installation has been found…”,只能upgrade,不能覆盖安装。):rm -f /etc/postgres-reg.ini
3. 删除安装时自动创建的postgres用户:userdel postgres

你可能感兴趣的:(PostgreSQL,数据库技术)