Обсуждение: Upgrade from 9.3 to 9.4 issue
I have just upgraded from Fedora 21 to 22.
This included an upgrade of PostgreSQL from 9.3 to 9.4 which causes postmaster
to fail because the existing databases are still at 9.3.
As suggested, I then ran postgresql-setup --upgrade but this failed with:
Performing Consistency Checks
-----------------------------
Checking cluster versions ok
Checking database user is a superuser ok
Checking database connection settings ok
Checking for prepared transactions ok
Checking for reg* system OID user data types ok
Checking for contrib/isn with bigint-passing mismatch ok
Checking for invalid "line" user columns ok
Creating dump of global objects ok
Creating dump of database schemas
books
postgres
pots
stocks
template1
ok
lc_collate cluster values do not match: old "en_US.UTF-8", new "en_AU.UTF-8"
Failure, exiting
How can I recover from here?
Cheers and thanks,
Stephen Davies
Stephen Davies <sdavies@sdc.com.au> writes:
> I have just upgraded from Fedora 21 to 22.
> This included an upgrade of PostgreSQL from 9.3 to 9.4 which causes postmaster
> to fail because the existing databases are still at 9.3.
> As suggested, I then ran postgresql-setup --upgrade but this failed with:
> lc_collate cluster values do not match: old "en_US.UTF-8", new "en_AU.UTF-8"
Hm, apparently you changed the system-wide language setting between F21
and F22?
One thing you should do is file a bug in Red Hat's bugzilla, pointing out
that postgresql-setup needs to endeavor to create the new cluster with
lc_collate and lc_ctype matching the old one.
Then, depending on what you want to do:
1. You really want to switch to en_AU, not just system-wide but for the
database: gonna have to dump and reload, I'm afraid. pg_upgrade will
not handle this scenario.
2. You want to switch to en_AU system-wide but it's okay to leave the
database running in en_US: what I'd do personally is edit the
postgresql-setup shell script and add "export LANG=en_US.UTF-8" just
before the initdb call. This won't stick across your next Fedora
upgrade, but hopefully by then Red Hat will have addressed your bug.
3. This was a mistake and you'd rather stay in en_US all round:
you can probably change the system-wide language setting somewhere,
but I do not remember where right at the moment.
regards, tom lane
On 31/10/15 13:32, Tom Lane wrote: > Stephen Davies <sdavies@sdc.com.au> writes: >> I have just upgraded from Fedora 21 to 22. >> This included an upgrade of PostgreSQL from 9.3 to 9.4 which causes postmaster >> to fail because the existing databases are still at 9.3. >> As suggested, I then ran postgresql-setup --upgrade but this failed with: >> lc_collate cluster values do not match: old "en_US.UTF-8", new "en_AU.UTF-8" > > Hm, apparently you changed the system-wide language setting between F21 > and F22? > > One thing you should do is file a bug in Red Hat's bugzilla, pointing out > that postgresql-setup needs to endeavor to create the new cluster with > lc_collate and lc_ctype matching the old one. > > Then, depending on what you want to do: > > 1. You really want to switch to en_AU, not just system-wide but for the > database: gonna have to dump and reload, I'm afraid. pg_upgrade will > not handle this scenario. > > 2. You want to switch to en_AU system-wide but it's okay to leave the > database running in en_US: what I'd do personally is edit the > postgresql-setup shell script and add "export LANG=en_US.UTF-8" just > before the initdb call. This won't stick across your next Fedora > upgrade, but hopefully by then Red Hat will have addressed your bug. > > 3. This was a mistake and you'd rather stay in en_US all round: > you can probably change the system-wide language setting somewhere, > but I do not remember where right at the moment. > > regards, tom lane > I have resolved this issue. I chose your option 2 (almost). I couldn't get postgresql-setup to do what I wanted so I reverted to doing the upgrade by hand. Luckily, PostgreSQL 9.3 had not been removed from the box so I was able to manually initdb with the US collation etc to create a new cluster where I wanted it to be and then run a regular pg_upgrade. This is actually easier than mucking about with postgesql-setup. -- ============================================================================= Stephen Davies Consulting P/L Phone: 08-8177 1595 Adelaide, South Australia. Mobile:040 304 0583 Records & Collections Management.