Chr*_*lla 128 postgresql backup pg-dump postgresql-9.2
我正在尝试使用pg_dump工具转储Postgresql数据库.
$ pg_dump books > books.out
Run Code Online (Sandbox Code Playgroud)
我怎么会得到这个错误.
pg_dump: server version: 9.2.1; pg_dump version: 9.1.6
pg_dump: aborting because of server version mismatch
Run Code Online (Sandbox Code Playgroud)
该--ignore-version选项现已弃用,即使有效,也不会解决我的问题.
如何升级pg_dump来解决此问题?
Set*_*eth 68
我在Ubuntu上使用Heroku时遇到了这个问题,这就是我修复它的方法:
按照" Linux下载(Ubuntu) "中的描述添加PostgreSQL apt存储库.(其他操作系统也有类似的页面.)
升级到最新版本(对我来说是9.3):
sudo apt-get install postgresql
Run Code Online (Sandbox Code Playgroud)用以下内容重新创建符号链接/usr/bin:
sudo ln -s /usr/lib/postgresql/9.3/bin/pg_dump /usr/bin/pg_dump --force
Run Code Online (Sandbox Code Playgroud)
/usr/lib/postgresql/...上面路径中的版本号应与server version您收到的错误中的数字相匹配.因此,如果您的错误显示pg_dump: server version: 9.9,则链接到/usr/lib/postgresql/9.9/....
Ome*_*lam 56
检查pg_dump的已安装版本:
find / -name pg_dump -type f 2>/dev/null
Run Code Online (Sandbox Code Playgroud)我的输出是:
/usr/pgsql-9.3/bin/pg_dump
/usr/bin/pg_dump
Run Code Online (Sandbox Code Playgroud)安装了两个版本.要使用更新版本更新pg_dump:
sudo ln -s /usr/pgsql-9.3/bin/pg_dump /usr/bin/pg_dump --force
Run Code Online (Sandbox Code Playgroud)这将创建较新版本的符号链接.
小智 40
Mac有一个内置/usr/bin/pg_dump命令,用作默认值.
使用postgresql安装,您将获得另一个二进制文件 /Library/PostgreSQL/<version>/bin/pg_dump
fra*_*ncs 26
您可以在pg_dump客户端计算机中安装PostgreSQL 9.2.1,也可以只将$PGHOMEPostgreSQL服务器计算机复制到客户端计算机.请注意,initdb客户端计算机中不需要新的群集.
完成9.2.1软件的安装后,请记住编辑.bash_profile文件中的一些环境变量.
Dee*_*ale 24
您可以pg_dump在命令中找到并使用完整路径
locate pg_dump
/usr/bin/pg_dump
/usr/bin/pg_dumpall
/usr/lib/postgresql/9.3/bin/pg_dump
/usr/lib/postgresql/9.3/bin/pg_dumpall
/usr/lib/postgresql/9.6/bin/pg_dump
/usr/lib/postgresql/9.6/bin/pg_dumpall
Run Code Online (Sandbox Code Playgroud)
现在只需在命令中使用所需版本的路径即可
/usr/lib/postgresql/9.6/bin/pg_dump books > books.out
Run Code Online (Sandbox Code Playgroud)
Abe*_*ker 15
如果您使用的是Ubuntu,则可能安装了旧版本postgresql-client.根据错误消息中的版本,解决方案如下:
sudo apt-get remove postgresql-client-9.1
sudo apt-get install postgresql-client-9.2
Run Code Online (Sandbox Code Playgroud)
col*_*rco 11
在 Ubuntu 上,您只需添加最新的 Apt 存储库,然后运行:
sudo apt-get install postgresql-client-11
Run Code Online (Sandbox Code Playgroud)
sol*_*anv 10
每次升级或重新安装新版本的PostgreSQL时, pg_dump 都会安装最新版本的.
PostgreSQL/bin 在您安装的最新版本的PostgreSQL(9.2.1是最新版本)下,系统上必须有一个目录,并尝试 pg_dump 在那里运行
from.
对于那些运行Postgres.app的用户:
将以下代码添加到您的.bash_profile:
export PATH=/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH
Run Code Online (Sandbox Code Playgroud)重新启动终端。
对于mac用户放在.profile文件的顶部.
export PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)
然后运行
. ~/.profile
Run Code Online (Sandbox Code Playgroud)
我认为其他人没有涵盖的替代答案。
如果您安装了多个 PG 集群(就像我一样),那么您可以使用pg_lsclusters.
您应该能够从显示的列表中看到版本和集群。
从那里,您可以执行以下操作:
pg_dump --cluster=9.6/main books > books.out
Run Code Online (Sandbox Code Playgroud)
显然,将版本和集群名称替换为适合您的情况的版本和集群名称,通过pg_lsclusters使用 / 分隔版本和集群返回的内容。这针对您希望运行的特定集群。
对我来说,问题是更新psql apt-get并没有解决新版本,即使在之后update. 以下工作有效。
乌班图
首先导入 PostgreSQL 包的 GPG 密钥。
sudo apt-get install wget ca-certificates
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Run Code Online (Sandbox Code Playgroud)
现在将存储库添加到您的系统中。
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 上安装 PostgreSQL
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
Run Code Online (Sandbox Code Playgroud)
https://www.postgresql.org/download/linux/ubuntu/
这对我有用,是上面和其他网站的解决方案的集合。如果您之前指定了像 postgressql-client-11 这样的版本,那么您需要先删除该版本。
sudo apt-get remove -y postgresql-client
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install -y postgresql-client-12
Run Code Online (Sandbox Code Playgroud)
对于使用Homebrew的Mac.从Heroku获取数据库时出现此问题.我已修好它只是运行:
brew upgrade postgresql
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您安装了 docker,您可以执行以下操作:
$ docker run postgres:9.2 pg_dump books > books.out
这将下载带有 Postgres 9.2 的 Docker 容器pg_dump,在容器内运行,并写入输出。
| 归档时间: |
|
| 查看次数: |
181702 次 |
| 最近记录: |