[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,480 次)