Thread: [ADMIN] Pg_upgradecluster failed
Hi all, I try to upgrade from 9.3 to 9.5 ii postgresql-9.3 9.3.14-1.pgdg70+1 amd64 object-relational SQL database, version 9.3 server ii postgresql-9.5 9.5.5-1.pgdg70+1 amd64 object-relational SQL database, version 9.5 server But with my command I got this error : oot@bas40:/etc/postgresql/9.3/main# pg_upgradecluster -v 9.5 -m upgrade 9.3 main Disabling connections to the old cluster during upgrade... Restarting old cluster with restricted connections... psql: FATAL: database "template1" is not currently accepting connections psql: FATAL: database "template1" is not currently accepting connections Use of uninitialized value $out in pattern match (m//) at /usr/share/perl5/PgCommon.pm line 925. psql: FATAL: database "template1" is not currently accepting connections Use of uninitialized value $out in pattern match (m//) at /usr/share/perl5/PgCommon.pm line 931. Use of uninitialized value $ctype in scalar chomp at /usr/share/perl5/PgCommon.pm line 934. Use of uninitialized value $collate in scalar chomp at /usr/share/perl5/PgCommon.pm line 935. Error: could not get cluster locales I get this error on some of my pgsql servers and it's work on other one. If I check the dataallowconn on my server : postgres=# select * from pg_database ; datname | datdba | encoding | datcollate | datctype | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | datminmxid | dattablespace | datacl ------------+--------+----------+------------+----------+---------------+--------------+--------------+---------------+--------------+------------+---------------+------------------------------------- postgres | 10 | 0 | C | C | f | t | -1 | 12030 | 150000757 | 32376355 | 1663 | energycomm | 16384 | 6 | C | C | f | t | -1 | 12030 | 101905564 | 28843537 | 1663 | template0 | 10 | 0 | C | C | t | t | -1 | 12030 | 200000724 | 37376355 | 1663 | {=c/postgres,postgres=CTc/postgres} template1 | 10 | 6 | C | C | t | f | -1 | 12030 | 200000758 | 37376355 | 1663 | (4 lignes) postgres=# If I try to change from false to true I got this error : root@bas40:/etc/postgresql/9.3/main# pg_upgradecluster -v 9.5 -m upgrade 9.3 main Disabling connections to the old cluster during upgrade... Restarting old cluster with restricted connections... Stopping old cluster... Creating new cluster 9.5/main ... config /etc/postgresql/9.5/main data /var/lib/postgresql/9.5/main locale fr_BE.UTF-8 socket /var/run/postgresql port 5433 Performing Consistency Checks ----------------------------- Checking cluster versions ok Checking database user is the install user ok Checking database connection settings template0 must not allow connections, i.e. its pg_database.datallowconn must be false Failure, exiting Error: pg_upgrade run failed. Logfiles are in /var/log/postgresql/pg_upgradecluster-9.3-9.5-main.rFyo Re-enabling connections to the old cluster... Error during cluster dumping, removing new cluster pg_ctl : le fichier de PID « /var/lib/postgresql/9.3/main/postmaster.pid » n'existe pas Le serveur est-il en cours d'exécution ? Error: could not reload old cluster, please do that manually root@bas40:/etc/postgresql/9.3/main# Someone have this issue and know how to solved it ? Kind regards Matthieu Lejeune
Re: Matthieu Lejeune 2017-01-18 <45d1244b-145d-ffce-d140-0f693ae4948f@exxoss.com> > But with my command I got this error : > > oot@bas40:/etc/postgresql/9.3/main# pg_upgradecluster -v 9.5 -m upgrade 9.3 > main > Disabling connections to the old cluster during upgrade... > Restarting old cluster with restricted connections... > psql: FATAL: database "template1" is not currently accepting connections Hi, pg_upgradecluster relies on the template1 database being accessible for maintenance operations during the upgrade. This is currently not configurable, but we could certainly add an option to allow passing a different database (e.g. "postgres") for the upgrade. > postgres=# select * from pg_database > ; > datname | datdba | encoding | datcollate | datctype | datistemplate | > datallowconn | datconnlimit | datlastsysoid | datfrozenxid | datminmxid | > dattablespace | datacl > ------------+--------+----------+------------+----------+---------------+--------------+--------------+---------------+--------------+------------+---------------+------------------------------------- > template0 | 10 | 0 | C | C | t | t > | -1 | 12030 | 200000724 | 37376355 | 1663 | > {=c/postgres,postgres=CTc/postgres} Uhm, "template0" must never be connected to, you shouldn't have set datallowconn = 't. for it. > If I try to change from false to true I got this error : > template0 must not allow connections, i.e. its pg_database.datallowconn must (It seems this was even wrong before you changed it now) Mit freundlichen Grüßen, Christoph Berg -- Senior Berater, Tel.: +49 2166 9901 187 credativ GmbH, HRB Mönchengladbach 12080, USt-ID-Nummer: DE204566209 Trompeterallee 108, 41189 Mönchengladbach Geschäftsführung: Dr. Michael Meskes, Jörg Folz, Sascha Heuer pgp fingerprint: 5C48 FE61 57F4 9179 5970 87C6 4C5A 6BAB 12D2 A7AE