升级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服务,即可生效。