From: | Charlie Hayes <ce(dot)ceo(at)cybercoment(dot)com> |
---|---|
To: | Charles William Hayes <ce(dot)ceo(at)cybercoment(dot)com>, pgsql-docs(at)lists(dot)postgresql(dot)org |
Subject: | Re: Postgres upgrade does not mention requirement to have only 1 user |
Date: | 2021-01-26 07:45:09 |
Message-ID: | F71B7AFC-E480-4432-A7EE-9EB6F9C18AC9@cybercoment.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-docs |
I see now that the user check was verifying the target database and not the source. My upgrade script (which I used from 11 to 12) initialized the target database for upgrades as it did for seeding from scratch which included a user account. I removed that part of the script and the upgrade completed successfully.
I maintain that the documentation and error message could be improved and the process remains rough.
Thanks,
Charlie
> On Jan 26, 2021, at 12:57 AM, PG Doc comments form <noreply(at)postgresql(dot)org> wrote:
>
> The following documentation comment has been logged on the website:
>
> Page: https://www.postgresql.org/docs/13/pgupgrade.html
> Description:
>
> During the pg_upgrade process, a check is run to make sure
> pg_catalog.pg_roles has only a single non pg_* user, typically this is just
> 'postgres'. If this check fails, the error message is "Only the install user
> can be defined in the new cluster."; This message implies the user executing
> pg_upgrade must match the the rolsuper in pg_catalog.pg_roles.
>
> There's no indication in the documentation that the user table must be
> flushed of all but the one user, nor does it prescribe a method to move
> forward. The error message is not helpful; I only figured it out by finding
> and reading the postgres source code.
>
> I'll add that this upgrade process is quite rough. The instructions dictate
> the install happen on the new version and to reference the old binaries;
> this can be tricky to setup because simply installing the new version often
> removes the old version. I use the docker image so the old version is not
> present on the new docker image. After spending quite some time getting the
> two versions in line and running the upgrade, I ran into this user issue. I
> suspect I need to delete all users from the database before running the
> upgrade, and obviously that must happen on the old version, which
> essentially precludes a new version from 'adopting' an old version's data
> files. This also encourages application developers to use the default
> superuser for all db access which is a bad practice.
>
> I'm fine with the upgrade needing to be explicit, but Ideally there would be
> no need to load the old binaries or prep the user table.
From | Date | Subject | |
---|---|---|---|
Next Message | Laurenz Albe | 2021-01-26 08:39:59 | Re: Postgres upgrade does not mention requirement to have only 1 user |
Previous Message | PG Doc comments form | 2021-01-26 06:57:53 | Postgres upgrade does not mention requirement to have only 1 user |