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

我通过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 

错误。

对于我在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 (当您执行上述步骤时,此脚本将自动在当前目录中创build)
  6. rm delete_old_cluster.sh

下面是我在Fedora上做的:

  • 重命名你的旧数据目录像data.old
  • 运行postgresql-setup initdb这将创build一个新的数据目录
  • 然后运行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/ 
  • 你也想从data.old中拷贝pg_hba.conf和postgresql.conf到新的数据目录。
  • 重新启动postgresql

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

initdb -D / usr / local / var / postgres

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

对于Arch Linux , 在wiki中有一个解决scheme可以很好地工作:

 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'