近期工作中需要用到PostGreSQL和PostGis,前者软件,后者类似一个插件,各种报错和各种查看文档,花了一天半事件。在安装过程中也遇到各种各样问题,具体安装步骤与所遇到问题如下:
1、软件下载
PostGreSQL
(1)压缩包格式:https://www.enterprisedb.com/download-postgresql-binaries
选择对应版本进行下载,本文所用9.6.18
(2)exe格式:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
选中对应版本进行下载
PostGis
http://download.osgeo.org/postgis/windows/
可下载.zip格式和.exe格式
2、软件安装
2.1 PostGreSQL安装
(1)exe一键安装
由于本机一点击.exe直接报错,错误如下,于是选择第二种
目前尚未解决,若未遇到这种情况,可根据https://www.runoob.com/postgresql/windows-install-postgresql.html
网址介绍进行安装。
(2)通过源文件安装
首页将压缩包解压到没有中文没有空格目录下,本问解压到E:\PostgreSQL中,并在该目录下新建data文件夹,为了方便,将data文件夹右键属性->安全中将该文件设置为全完全控制,若有重要数据或权限分明,自行设置
然后以管理员身份打开cmd,进入解压后的bin目录下
initdb.exe -D ..\data -E UTF8 --locale=Chinese
输入上述指令出现下面错误
进过我多次尝试与上网搜索,发现是locale设置问题
解决方法如下
initdb.exe -D ..\data --no-locale
至此PostgreSQL安装完成,但未设置账号密码,以下是设置账号,这样可以通过Navicat远程访问以及注册为window服务
#注册为window服务,服务名为pgsql
pg_ctl.exe register -D ..\data -Npgsql
#启动服务
net satrt pgsql
#关闭服务
net stop pgsql
设置账号,数据库密码等
#先以默认账号进入
psql postgres
#创建用户,并设置密码
create user postgres with password '123456';
#创建数据库,并将所有权赋给postgres
create database test owner postgres;
grant all privileges on database test to postgres;
#赋予角色创建权限
ALTER ROLE postgres CREATEROLE SUPERUSER;
#将默认建表设置为utf-8,不然后面安装postgis报错
UPDATE pg_database SET datistemplate=FALSE WHERE datname='template1';
DROP DATABASE template1;
CREATE DATABASE template1 WITH owner=postgres template=template0 encoding='UTF8';
UPDATE pg_database SET datistemplate=TRUE WHERE datname='template1';
效果如下图
设置完成后即可直接用Navicat连接(本地),如果是外网,需部署到服务器上
PostGis
(1)exe一键安装
所需注意事项:所安装位置需要是你PostgreSQL所在bin目录一个位置
若出现:permission denied to create database
用户权限不够,在postgresql里面赋予之前所创用户创建表的权限
ALTER ROLE postgres CREATEROLE SUPERUSER;
若出现:OGR FDW only works with UTF-8 databases
解决方案:将默认建表设置为utf8格式,上文代码有提到