问题概述
几个月前安装pgSQL和postGIS的时候是通过EDB安装,使用没有什么问题。然而安装pgRouting的时候出了些意外。
对于pgRouting的安装,官方文档给出了两个解决方案。
- 利用Homebrew安装,但是由于pgSQL并不在Homebrew的管理下,导致安装之后启动扩展时,postgreSQL就会尝试在一个错误的路径(例如「/Library/PostgreSQL/13/share/postgresql/extension/」)下查找插件
pgrouting.control
。 - 在GitHub上下载源码并自己编译。不过由于架构的问题,导致make过程失败。搜索Stack Overflow之后发现解决方案可能需要一个x86版本的brew。
考虑到个人经验、解决问题能力之类的因素,还是决定通过卸载之前通过EDB安装的pgSQL,重新在Homebrew下安装来解决。
解决过程
卸载
如果已有数据库里有数据需要备份记得提前备份。
EDB官网上甚至有卸载软件的详细指南,真良心。卸载程序位于/Library/PostgreSQL/13
下。open uninstall-postgres.app
命令打开卸载程序,执行一键卸载。
卸载完毕,一些遗留的文档文件需要手动删除。
安装
brew install postgresql postgis pgrouting
来安装所需要的全部软件和插件。
安装完毕之后,系统会提示我们手动启动postgresql的后台服务。
sh复制代码
1brew services restart postgresql
在启动服务之前,最好先重启电脑,因为此前卸载的postgresql仍然占用了/tmp
文件夹中的某些文件。如果直接启动新服务,很可能启动失败,并在启动日志中出现如下错误:
could not open lock file "/tmp/.s.PGSQL.5432.lock": Permission denied
启动服务后,检查一下服务状态。started
表示服务启动成功。
sh复制代码
1brew services list 2# Name Status User File 3# postgresql started palemoons ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
创建postgres用户
在Homebrew
下安装的PostgreSQL并不会为我们创建postgres用户,因此我们需要自己创建一个超管用户postgres。
在终端环境下(不需要进入数据库),执行createuser -s postgres
创建用户。
pgAdmin
至此,数据库已经可以正常使用了。不过个人感觉pgAdmin还是挺爽的,写作业还方便,所以装一个玩玩。
sh复制代码
1brew install --cask pgadmin4
好吧,第一次知道Homebrew还能安装GUI程序(但也在情理之中?)。
Comments