Estou correndo postgresql-server-16.3-3.fc41.x86_64
e quero criar um banco de dados para o software wiki XWiki .
Seguindo as instruções detalhadas aqui , devo emitir a seguinte instrução CREATE DATABASE :
CREATE DATABASE xwiki
WITH
OWNER = postgres
ENCODING = 'UNICODE'
LOCALE_PROVIDER = 'builtin'
LOCALE = 'C.UTF-8'
TABLESPACE = pg_default;
Ao emitir essa declaração, recebo:
ERROR: unrecognized locale provider: builtin
Isso é inesperado, pois a documentação do PostgreSQL afirma que builtin
é uma palavra-chave válida. Da página para CREATE DATABASE
:
locale_provider
: Especifica o provedor a ser usado para a ordenação padrão neste banco de dados. Os valores possÃveis sãobuiltin
,icu
(se o servidor foi criado com suporte a ICU) oulibc
. Por padrão, o provedor é o mesmo do modelo. Consulte a Seção 23.1.4 para obter detalhes.
De onde vem essa mensagem de erro?
Como alternativa, posso usar um LOCALE_PROVIDER
equal to libc
, o mesmo que o provedor de localidade para template1
o template database . Nesse caso, a collation também deve ser igual à do template database template1
. Esse aqui é en_US.UTF-8
(observe que, de acordo com a documentação para Character Set Support , UNICODE
na verdade significa UTF-8
, então não há contradição):
CREATE DATABASE xwiki
WITH
OWNER = postgres
ENCODING = 'UNICODE'
LOCALE_PROVIDER = 'libc'
LOCALE = 'en_US.UTF-8'
TABLESPACE = pg_default;
Isso funciona bem.
Ou pode-se usar ICU com um local ICU apropriado (embora eu não saiba se o XWiki pode lidar com isso. Mas deveria, afinal é apenas um local):
CREATE DATABASE xwiki
WITH
OWNER = postgres
TEMPLATE = 'template0'
ENCODING = 'UNICODE'
LOCALE_PROVIDER = 'icu'
ICU_LOCALE = 'en-US'
TABLESPACE = pg_default
Ok, a resposta é simplesmente que estou usando o PostgreSQL 16.3, enquanto o
builtin
provedor só está disponÃvel no PostgreSQL 17.Manual do PostgreSQL 16
Manual do PostgreSQL 17
Então vou tentar isso e ver o que o xwiki diz:
O banco de dados
template1
não pode ser usado se eu quiser uma localidadeC.UTF-8
, poistemplate1
a localidade é essaen_US.UTF-8
por algum motivo.