lc_collate cluster values do not match error running PSQL upgrade scripts for GMS

  • 7022566
  • 18-Jan-2018
  • 06-Sep-2019

Environment

GroupWise Mobility Service 2014 R2
GroupWise Mobility Service 18

Situation

  • Preparing a GMS server to be upgraded from SLES11 to SLES12 or patching from SLES12 SP1/2 server to SP3
  • Running scripts pgUpdate.sh or pgUpdate94to96.sh gives the following error
    • lc_collate cluster values do not match:  old "en_GB.UTF-8", new "en_US.UTF-8"
      Failure, exiting
  • GMS services do not start
  • Other examples of lc_collate error can include de_DE.UTF-8 or any other non-US locale

Resolution

  • Edit the update database script
    • pgUpdate.sh or pgUpdate94to96.sh as appropriate
  • Establish the server's locale
    • # locale | grep LANG
      LANG=en_GB.UTF-8
  • Search for the "collate" string and replace the "en_US.UTF-8" value which with the locale from the previous step
    • Example
      From:  su postgres -c '/usr/lib/postgresql94/bin/initdb --lc-collate="en_US.UTF-8" -D /var/lib/pgsql/pgsql94/data'
      To:      su postgres -c '/usr/lib/postgresql94/bin/initdb --lc-collate="en_GB.UTF-8" -D /var/lib/pgsql/pgsql94/data'
  • Save the changes and re-run the script
The fix of that bug is to use locale as a variable and not as hard coded value, i.e. in newer script you would have then:

su postgres -c '/usr/lib/postgresql94/bin/initdb --locale=$locale -D /var/lib/pgsql/pgsql94/data'

Additional Information

The SLES server must be registered with the NCC or SMT so newer repositories are available per the documentation, here.

Both scripts require, and will download, newer RPMs from the online repositories. If they are not available, then the upgrade will most likely fail.