[PostgreSQL] pg_dump 出現 server version mismatch 錯誤

[PostgreSQL] pg_dump 出現 server version mismatch 錯誤

今天在跑 pg_dump 來備份 PostgreSQL 的 DB 時,

突然出現了 server version mismatch 的錯誤:

pg_dump: server version: 9.3.6; pg_dump version: 9.2.13
pg_dump: aborting because of server version mismatch

 

嗯… 來確定一下 pg_dump 的版本,是 9.2.13:

root@localhost ~ # pg_dump --version
pg_dump (PostgreSQL) 9.2.13

 

PostgreSQL server 是在哪呢?

先 ps 直接找一下,看來是在 /usr/pgsql-9.3/bin/postgres,版本是 9.3.6:

root@localhost ~ # ps aux | grep postgres
postgres  2167  0.1  0.1 353748 26520 ?        S    Oct14   4:34 /usr/pgsql-9.3/bin/postgres -D /var/lib/pgsql/9.3/data
postgres  2168  0.0  0.0 191716  1576 ?        Ss   Oct14   0:00 postgres: logger process
postgres  2170  0.0  0.0 353884 15608 ?        Ss   Oct14   0:59 postgres: checkpointer process
postgres  2171  0.0  0.0 353748  2444 ?        Ss   Oct14   0:03 postgres: writer process
postgres  2172  0.0  0.0 353748  1652 ?        Ss   Oct14   0:03 postgres: wal writer process
postgres  2173  0.0  0.0 354800  3128 ?        Ss   Oct14   0:11 postgres: autovacuum launcher process
postgres  2174  0.0  0.0 192176  2056 ?        Ss   Oct14   2:34 postgres: stats collector process
postgres  2247  0.0  0.0 355696  6768 ?        Ss   Oct14   0:09 postgres: dtasuser dtasdb 127.0.0.1(60303) idle
postgres  2257  0.0  0.0 355104  3824 ?        Ss   Oct14   0:00 postgres: dtasuser dtasdb 127.0.0.1(60305) idle
postgres  2258  0.0  0.0 355104  5412 ?        Ss   Oct14   0:00 postgres: dtasuser dtasdb 127.0.0.1(60306) idle
postgres  2473  0.0  0.0 355848  7284 ?        Ss   Oct14   0:03 postgres: dtasuser dtasdb 127.0.0.1(60320) idle
postgres 24656  0.1  0.0 356348  9000 ?        Ss   13:08   0:00 postgres: dtasuser dtasdb 127.0.0.1(44032) idle
postgres 25396  0.0  0.0 355212  5932 ?        Ss   13:09   0:00 postgres: dtasuser dtasdb 127.0.0.1(44053) idle
postgres 25397  0.1  0.0 355916  7032 ?        Ss   13:09   0:00 postgres: dtasuser dtasdb 127.0.0.1(44054) idle
root     25764  0.0  0.0 112644   952 pts/0    S+   13:09   0:00 grep --color postgres
root@localhost ~ # /usr/pgsql-9.3/bin/postgres --version
postgres (PostgreSQL) 9.3.6

 

不過為什麼這兩個版本會不一樣就不太確定了,

用 yum update 試著更新看看,pg_dump 所屬的 postgresql 套件並沒有新的更新可用,

所以沒辦法把 /usr/bin/pg_dump 換成 9.3.6…

 

不過其實 PostgreSQL server 裡面就有含同版本的 pg_dump 了~

所以可以直接去拿來用,當作一個暫時的解法,

像下面就是讓 /usr/bin/pg_dump 變成一個 symbolic link 到 /usr/pgsql-9.3/bin/pg_dump:

cd /usr/bin
mv pg_dump pg_dump.bak
ln -s /usr/pgsql-9.3/bin/pg_dump ./
mv pg_restore pg_restore.bak
ln -s /usr/pgsql-9.3/bin/pg_restore ./

 

這樣改好之後,pg_dump/pg_restore 就都可以正常執行囉~

 

(本頁面已被瀏覽過 2,487 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料