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