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

Dan*_*her 29 postgresql

我通过 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
Run Code Online (Sandbox Code Playgroud)

它没有用。这是输出。

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
Run Code Online (Sandbox Code Playgroud)

错误。

Max*_*yak 41

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

  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


小智 14

如果您在 macOS 上\xe2\x80\x99re 并通过 Homebrew 安装了 Postgres,则只需运行:

\n
brew postgresql-upgrade-database\n
Run Code Online (Sandbox Code Playgroud)\n

这将确保安装旧的 Postgres 版本,创建新数据库,然后通过pg_upgrade. 旧数据将保留在/usr/local/var/postgres.old.

\n


小智 7

这是我在 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/
Run Code Online (Sandbox Code Playgroud)
  • 您还想将 pg_hba.conf 和 postgresql.conf 从 data.old 复制到新的数据目录。
  • 重启 postgresql