postgres从9.1更新到9.2,所需的数据库更新失败

从postgres 9.1到9.2,它说数据库需要升级,所以给我的升级命令,并得到以下

$ sudo service postgresql upgrade Stopping postgresql service: [ OK ] Upgrading database: [FAILED] See /var/lib/pgsql9/pgupgrade.log for details. 

日志文件/var/lib/pgsql9/pgupgrade.log的内容是

 Performing Consistency Checks ----------------------------- Checking current, bin, and data directories ok Checking cluster versions ok connection to database failed: fe_sendauth: no password supplied could not connect to old postmaster started with the command: "/usr/lib64/pgsql/postgresql-9.1/bin/pg_ctl" -w -l "pg_upgrade_server.log" -D "/var/lib/pgsql9/data-old" -o "-p 5432 -b -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directory='/var/lib/pgsql9'" start Failure, exiting 

我使用postgres与密码启用这样的事情pg_connect("host=localhost port=5432 dbname=pgdbname user=postgres password=postgrespassword");

我有yum update我的系统,并陷入了这个。 你甚至可以build议一种方法,我可以恢复一切,那么这将是伟大的!

解决方法

编辑你的pg_hba.conf并在local设置连接以在升级期间trust

背景

亚马逊的亚马逊Linux团队做了一个奇怪的决定,在一个简单的“yum更新”上对PostgreSQL进行重大版本升级。 大多数供应商为不同的主要版本使用不同的软件包名称,因此用户必须做出明确的升级决定。 亚马逊还没有这样做 , 不认真对待这个问题的反馈 。

在“yum update”上将用户升级到新的PostgreSQL版本是完全由于遇到的原因而错误的做法: pg_upgrade有限制,除非您有旧的服务器版本的二进制文件,否则不能执行转储和重新加载。

我前一段时间写了一个关于这个的说明 。

自从我写这本书以来, 有关此主题的Amazon Linux常见问题解答条目有所改进,但仍然不承认他们正在使用错误的打包策略来创build问题。

认真考虑使用一个更加注意PostgreSQL的发行版。 PGD​​G团队目前没有为Amazon Linux生产软件包,否则我会推荐使用它们。