Linux上的PostgreSQL 10-LC_COLLATE语言环境en_US.utf-8无效

Nat*_*ith 3 postgresql

错误:无效的语言环境名称:“ en_US.utf-8”

在PostgreSQL 10上运行Ubuntu服务器18.04 Beta 2

在运行适用于9.5的数据库创建脚本时,我现在看到'en_US.UTF-8'作为语言环境的问题:

CREATE DATABASE db WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8';
Run Code Online (Sandbox Code Playgroud)

我知道这可能是多余的,因为我知道默认值为'en_US.etf-8'。删除LC_COLLATE和LC_CTYPE参数使我运行脚本。

那么对于V 10,语言环境定义是否有所改变?还是现在正在发生其他事情?我在Postgres 10手册中找不到任何相关内容。

wil*_*l93 9

我有同样的错误,我生成了新的语言环境:

locale-gen en_US.UTF-8 
Run Code Online (Sandbox Code Playgroud)

我确认locale -a它确实存在,然后我注销只是为了确保,但我仍然在创建数据库时遇到相同的错误。

最后,我通过简单地重新启动 postgresql 服务器解决了这个错误:

sudo systemctl restart postgresql
Run Code Online (Sandbox Code Playgroud)

之后,数据库创建命令开始工作了!


Man*_*azo 6

它已经在 kubuntu 上执行并且运行完美,加上上面提到的一些额外步骤,正确的步骤应该是:

  1. 验证存在;如果不存在,则继续创建它(需要 sudo 权限)

    locale -a  |grep -i 'es_ES.utf-8'
    sudo locale-gen es_PE.UTF-8
    
    Run Code Online (Sandbox Code Playgroud)
  2. 验证区域设置是否已创建。

    locale -a|grep -i es
    es_ES.utf8
    es_PE.utf8
    
    Run Code Online (Sandbox Code Playgroud)
  3. 创建区域设置后,继续重新启动 postgres 服务,否则您将收到以下错误:

    ERROR:  invalid locale name: "es_ES.UTF-8"
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重新启动 postgres 服务

    systemctl restart postgresql
    
    Run Code Online (Sandbox Code Playgroud)
  5. 最后,数据库创建完成。

    postgres=# create database db_izipay_prod with template=template0 encoding='utf8' lc_collate='es_ES.UTF-8' lc_ctype='es_ES.UTF-8' owner=postgres;
    CREATE DATABASE
    
    Run Code Online (Sandbox Code Playgroud)


Vao*_*sun 5

检查是否有可用的语言环境(locale -a如果找不到),请尝试手动添加:

locale-gen en_US.UTF-8 
Run Code Online (Sandbox Code Playgroud)

在这之后

CREATE DATABASE db WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8';
Run Code Online (Sandbox Code Playgroud)

应该管用

  • 我发现需要重新启动(`sudo service postgresql restart`)才能工作。 (2认同)

And*_*kov 5

对我来说帮助了接下来的步骤:

1. sudo locale-gen "en_US.UTF-8"

2. sudo dpkg-reconfigure locales

3. sudo systemctl restart postgresql
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但 locale-gen 不起作用。