如何升级postgresl数据库?不兼容错误


26

我通过Homebrew安装了postgresql。

升级后出现以下问题:

FATAL: database files are incompatible with server DETAIL: The data directory was initialized by PostgreSQL version 9.0, which is not compatible with this version 9.1.2.

有关如何升级的任何提示?我尝试了以下方法:

$ pg_upgrade -d /usr/local/var/postgres/ -D /usr/local/var/postgres -b 
/usr/local/Cellar/postgresql/9.0.4/bin -B /usr/local/Cellar/postgresql/9.1.2/bin

没用 这是输出。

Performing Consistency Checks
Checking current, bin, and data directories                 ok
Checking cluster versions                                   
This utility can only upgrade to PostgreSQL version 9.1.
Failure, exiting

错误。

Answers:


36

对于使用Homebrew在OS X上的我来说就是这样。

  1. 用Homebrew安装了新的postgres(开始出现错误)
  2. mv /usr/local/var/postgres /usr/local/var/postgres.old
  3. initdb -D /usr/local/var/postgres
  4. pg_upgrade -b /usr/local/Cellar/postgresql/9.0.4/bin -B /usr/local/Cellar/postgresql/9.1.2/bin -d /usr/local/var/postgres.old -D /usr/local/var/postgres
  5. ./delete_old_cluster.sh (执行上述步骤时,会在当前目录中自动为您创建此脚本)
  6. rm delete_old_cluster.sh

太棒了,正是我需要的朋友!谢谢。特别是从雪豹升级狮子之后。检查server.log的谷歌人!
pjammer 2012年

这对我来说效果很好,谢谢!要注意在Postgres不能做这些步骤,因此,如果您已经通过自制安装之前运行确保卸载展开剂,使得它自动启动:launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist。完成上述所有步骤后,只需重新加载即可:launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Markus Amalthea Magnuson

6

这是我在fedora上执行的操作:

  • 将旧数据目录重命名为data.old
  • 运行postgresql-setup initdb此命令将创建一个新的数据目录
  • 然后跑 pg_upgrade -b /usr/lib64/pgsql/postgresql-9.0/bin/ -B /usr/bin/ -d data.old/ -D data

我认为对您而言:

pg_upgrade -b /usr/local/Cellar/postgresql/9.0.4/bin -B /usr/bin/ -d /usr/local/var/postgres.old/ -D /usr/local/var/postgres/
  • 您还希望将pg_hba.conf和postgresql.conf从data.old复制到新的数据目录。
  • 重新启动PostgreSQL

1

我错过/忘记了“ initdb”这一行

初始化数据库-D / usr / local / var / postgres

创建数据库之后,pg_upgrade在我的Windows系统上工作。


0

对于Arch LinuxWiki中有一个对我来说很好的解决方案

pacman -S --needed postgresql-old-upgrade
su -
su - postgres -c 'mv /var/lib/postgres/data /var/lib/postgres/data-9.2'
su - postgres -c 'mkdir /var/lib/postgres/data'
su - postgres -c 'initdb --locale en_US.UTF-8 -E UTF8 -D /var/lib/postgres/data'
su - postgres -c 'pg_upgrade -b /opt/pgsql-9.2/bin/ -B /usr/bin/ -d /var/lib/postgres/data-9.2 -D /var/lib/postgres/data'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.