升级PostgreSQL遇到的问题
之前将PostgreSQL从9.5升级到了10.3版本,安装时将端口设置成了5433,(默认是5432),后来发现在使用psql来restore db会发生语法错误。
由于PostgreSQL10.3版本添加了9.5版本没有的sql语法,导致了这个错误,但我明明已经升级了数据库,为什么还会遇到语法错误呢?而且我发现我在cmd窗口里连接了数据库之后,psql提示我psql的版本是10.3,而server版本却是9.5。
在折腾了好一会,才被自己的蠢都哭了。
原来是因为我在连接数据库时没有通过-p 5433
来指定10.5版本的server端口号,所以psql自动连接了默认端口号是5432的9.5版本server。
解决方式
连接数据库时指定端口号
如果要连接5432以外的端口号,必须通过-p
参数来指定端口号。
由于我原本用的是9.5版本的,本身就启动着9.5版本的server服务,端口号是默认的5432;后来我升级了10.3版本的,实际上PostgreSQL在升级时并不会卸载旧版本的,会在安装了新版本之后就自动启动新版本的server服务,这里我设置的端口号是5433。
于是在我的电脑上就同时启动着9.5和10.3两个版本的server服务,当我没有指定端口号时,其实一直是连接的9.5版本的server,于是在restore使用了新版本语法的db时就会报错。
修改默认端口号
如果我希望不指定端口号就能连接新版本的server,就只能将10.3的server的端口号改为默认端口号5432。
首先将9.5版本的server服务关闭,这个要在系统的服务管理器中将其关闭:
- win + R快捷键打开运行;
- 输入
services.msc
打开服务管理器; - 找到运行中的9.5版本的server服务将其关闭。
在PostgreSQL的安装路径下,找到对应版本的postgresql.conf文件(在data文件夹内):
- 修改
port = 5432
; - 保存修改,重启该版本的server服务,即可生效。