On 7/11/24 11:14, H wrote:
On July 11, 2024 11:06:02 AM GMT-04:00, Adrian Klaver 
<adrian.kla...@aklaver.com> wrote:
On 7/11/24 07:57, H wrote:
I used to successfully run psql server 13 in a CentOS 7 docker
container with CentOS 7 as the host operating system. I have now
upgraded that system to Rocky Linux 9 as the host operating system and
modifying my container to also use Rocky Linux 9 and psql server 16.

I can successfully get the container up and running and can connect
to it. However, I have not managed to modify the initdb statement to
use en_US.UTF-8 for all databases.

In the old container I used:

su - postgres -c "/usr/pgsql-13/bin/initdb -D /var/lib/pgsql/13/data/
-E 'UTF-8' --lc-collate='en_US.UTF-8' --lc-ctype='en_US.UTF-8'"

but this does not work with psql 16. I tried:

su - postgres -c "/usr/pgsql-16/bin/initdb -D /var/lib/pgsql/16/data/
-E 'UTF-8' --lc-lang='en_US'"

1) Per:

https://www.postgresql.org/docs/16/app-initdb.html

lc_lang does not exist and I get:

/usr/lib/postgresql/16/bin/initdb: unrecognized option '--lc-lang=en_US'

2) On Ubuntu 22.04 doing:

/usr/lib/postgresql/16/bin/initdb -D postgres/16/data/ -E 'UTF-8' --lc-collate='en_US.utf8' --lc-ctype='en_US.utf8'

I get:

postgres=# \l
List of databases
-[ RECORD 1 ]-----+--------------------
Name              | postgres
Owner             | aklaver
Encoding          | UTF8
Locale Provider   | libc
Collate           | en_US.utf8
Ctype             | en_US.utf8
ICU Locale        |
ICU Rules         |
Access privileges |
-[ RECORD 2 ]-----+--------------------
Name              | template0
Owner             | aklaver
Encoding          | UTF8
Locale Provider   | libc
Collate           | en_US.utf8
Ctype             | en_US.utf8
ICU Locale        |
ICU Rules         |
Access privileges | =c/aklaver         +
                  | aklaver=CTc/aklaver
-[ RECORD 3 ]-----+--------------------
Name              | template1
Owner             | aklaver
Encoding          | UTF8
Locale Provider   | libc
Collate           | en_US.utf8
Ctype             | en_US.utf8
ICU Locale        |
ICU Rules         |
Access privileges | =c/aklaver         +
                  | aklaver=CTc/aklaver

3) What does locale -a return on your machine?



and variations thereof with no success.

Without a definition of what '... no success' means there is no real
way
to answer this.


Any suggestions on what I have missed?

Thank you.



Good question! ”No success” meant that I have not been able to figure out how 
to have new databases default to en_US.UTF-8, instead they default to C.UTF-8.

What is the proper syntax for pgsql 16 for this? I could not get the example 
given in the docs to work...

--
Adrian Klaver
adrian.kla...@aklaver.com



Reply via email to