You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			35 lines
		
	
	
		
			970 B
		
	
	
	
		
			Markdown
		
	
			
		
		
	
	
			35 lines
		
	
	
		
			970 B
		
	
	
	
		
			Markdown
		
	
---
 | 
						|
layout: post
 | 
						|
title: "Add collation to Postgres post-initdb"
 | 
						|
date: 2018-05-16 14:09:15 +0200
 | 
						|
comments: true
 | 
						|
categories: 
 | 
						|
---
 | 
						|
 | 
						|
 | 
						|
Note: this is for old Postgres installs that lack the
 | 
						|
pg_import_system_collations function.
 | 
						|
 | 
						|
We need to operate as user so that the new collation has the proper
 | 
						|
ownership. We connect to template1, because by default we can't connect
 | 
						|
to template0.
 | 
						|
 | 
						|
    $ sudo -u postgres psql -d template1
 | 
						|
 | 
						|
Now allow ourselves to connect to template0
 | 
						|
 | 
						|
    template1=# UPDATE pg_database SET datallowconn = TRUE WHERE datname = 'template0';
 | 
						|
    template1=# \c template0
 | 
						|
 | 
						|
Create collation in the proper schema (pg_catalog). Quote collation name
 | 
						|
to preserve capitalization.
 | 
						|
 | 
						|
    template0=# CREATE COLLATION pg_catalog."en_US" (LOCALE='en_US.utf8');
 | 
						|
 | 
						|
Now reset datallowconn to FALSE.
 | 
						|
 | 
						|
    template0=# UPDATE pg_database SET datallowconn = FALSE WHERE datname = 'template0';
 | 
						|
 | 
						|
Now any database created from the template0 template will inherit the new
 | 
						|
collation.
 |