错误:区域设置名称无效:" 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';
我知道这可能是多余的,因为我理解默认为' en_US.etf-8'。删除LC_COLLATE和LC_CTYPE参数让我运行我的脚本。
对于V 10,语言环境定义是否以某种方式发生了变化?或者现在还有其他事情发生了吗?我在Postgres 10手册中找不到任何相关内容。
答案 0 :(得分:3)
如果找不到locale -a
,请检查可用的区域设置,尝试手动添加:
locale-gen en_US.UTF-8
之后
CREATE DATABASE db WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8';
应该有效
答案 1 :(得分:1)
它是在kubuntu上执行的,并且可以完美地工作,并且上面已经提到了一些其他步骤,正确的步骤应该是:
验证存在;如果不存在,请继续创建它(需要sudo权限)
locale -a |grep -i 'es_ES.utf-8'
sudo locale-gen es_PE.UTF-8
验证是否创建了语言环境。
locale -a|grep -i es
es_ES.utf8
es_PE.utf8
创建语言环境后,请重新启动postgres服务,否则您将收到以下错误:
ERROR: invalid locale name: "es_ES.UTF-8"
重新启动postgres服务
systemctl restart postgresql
最后,数据库已创建。
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
答案 2 :(得分:0)
我有同样的错误,我生成了新的语言环境:
locale-gen en_US.UTF-8
我用locale -a
验证了它确实存在,然后我注销以确认,但是在创建数据库时仍然遇到相同的错误。
最后,我通过简单地重新启动postgresql服务器来解决了该错误:
sudo systemctl restart postgresql
之后,数据库创建命令开始工作了!
答案 3 :(得分:0)
在Docker容器中得到了相同的错误。这是我非交互式解决问题的方法。
RUN echo "en_US UTF-8 " >> /etc/locale.gen && locale-gen