Problems with pg_upgrade. - Mailing list pgsql-general

From Bror Jonsson
Subject Problems with pg_upgrade.
Date
Msg-id 2B69ABB0-014A-4296-8D34-D2E83A84FA77@gmail.com
Whole thread Raw
Responses Re: Problems with pg_upgrade.
List pgsql-general
Dear all,

I’m trying to upgrade from 9.0 to 9.2 with out any success. the pg_upgrade script fails with the message Old and new
clusterinstall users have different values for pg_authid.oid: 

geo-route-in:~ bror$ /opt/local//lib/postgresql92/bin/pg_upgrade -b /opt/local//lib/postgresql90/bin/ -B
/opt/local//lib/postgresql92/bin/-d /Volumes/ruoteRAID/db/postgresql90/defaultdb/ -D
/Volumes/ruoteRAID/db/postgresql92/defaultdb/-u bror 
Performing Consistency Checks
-----------------------------
Checking current, bin, and data directories                 ok
Checking cluster versions                                   ok
Checking database user is a superuser                       ok
Checking for prepared transactions                          ok
Checking for reg* system OID user data types                ok
Checking for contrib/isn with bigint-passing mismatch       ok
Creating catalog dump                                       ok
Checking for presence of required libraries                 ok
Checking database user is a superuser                       ok

Old and new cluster install users have different values for pg_authid.oid.
Failure, exiting

The only information about this error I could find in in the source code:

> https://github.com/postgres/postgres/blob/master/contrib/pg_upgrade/check.c

…
    /*
     * We don't restore our own user, so both clusters must match have
     * matching install-user oids.
     */
    if (old_cluster.install_role_oid != new_cluster.install_role_oid)
        pg_fatal("Old and new cluster install users have different values for pg_authid.oid.\n");

    /*
     * We only allow the install user in the new cluster because other defined
     * users might match users defined in the old cluster and generate an
     * error during pg_dump restore.
     */
    if (new_cluster.role_count != 1)
        pg_fatal("Only the install user can be defined in the new cluster.\n");

    check_for_prepared_transactions(&new_cluster);
}
…

pg_authid in the old db looks as follows:

bror=# SELECT * FROM pg_authid;
 rolname  | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcatupdate | rolcanlogin | rolconnlimit |
rolpassword| rolvaliduntil  

----------+----------+------------+---------------+-------------+--------------+-------------+--------------+-------------+---------------
 postgres | t        | t          | t             | t           | t            | t           |           -1 |
 |  
 bror     | t        | t          | t             | t           | t            | t           |           -1 |
 |  
 django   | f        | t          | f             | f           | f            | t           |           -1 |
 |  
(3 rows)

And in the new one:

SELECT * FROM pg_authid;
 rolname | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcatupdate | rolcanlogin | rolreplication |
rolconnlimit| rolpassword | rolvaliduntil  

---------+----------+------------+---------------+-------------+--------------+-------------+----------------+--------------+-------------+---------------
 bror    | t        | t          | t             | t           | t            | t           | t              |
-1 |             |  
(1 row)

Any suggestion for how to fix this?


Many thanks!

/Bror Jonsson

pgsql-general by date:

Previous
From: Tobias Fielitz
Date:
Subject: pgbouncer not finding pidfile
Next
From: Tom Lane
Date:
Subject: Re: Problems with pg_upgrade.