安装PG时报上述错误。
网上搜索出许多解决方案比较常见的有:字符集,用户权限,等等。均已排除,而且因为很容易搜到,所以不再赘述。我遇到的问题,最先发现的解决方法是:只要使用缺省的程序目录和数据目录就一切OK。
但是由于磁盘分配的需要,以及数据库和应用程序分离的需要,往往需要自定义数据目录。
方法思路为先在缺省路径中完成软件安装,然后再迁移数据目录。步骤如下:
创建新的数据目录,修改所属用户和组,修改权限
sudo mkdir /home/data
sudo chown -R postgres:postgres data
sudo chmod 700 data停止正在运行的PG服务
su (切换到超户)
su - postgres (切换到postgres用户)
pg_ctl stop (停止PG服务)重新初始化数据库,并指定新目录作为数据目录
./initdb –encoding=UTF-8 –local=zh_CN.UTF8 –username=postgres –pwprompt –pgdata=/home/data/修改/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删除原有数据目录,重新启动PG服务程序
rm -rf /opt/Postgresql/data
pg_ctl restart
(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