postgresql - postgres createdb 语言环境问题
问题描述
由于以下原因,我在设置数据库时遇到了麻烦:
$ createdb -E UTF-8 -p 5432 nominatim
createdb: database creation failed: ERROR: encoding "UTF8" does not match locale "en_US"
DETAIL: The chosen LC_CTYPE setting requires encoding "LATIN1".
ERROR: Error executing external command: createdb -E UTF-8 -p 5432 nominatim
在 /etc/profile 中,我将语言环境设置为 en_US.UTF-8,当我将“语言环境”作为 postgres 用户(或我自己的用户)检查时,包括 LC_CTYPE 在内的所有变量都是“en_US.UTF-8”。另外,我已经运行sudo locale-gen en_US en_US.UTF-8
和sudo dpkg-reconfigure locales
. 有谁知道为什么 LC_CTYPE 似乎回落到 en_US 而不是 en_US.UTF-8 ?
解决方案
集群的默认区域设置由initdb
:
使用 . 创建数据库集群时,会自动初始化语言环境支持
initdb
。initdb
默认情况下,将使用其执行环境的语言环境设置初始化数据库集群 [...] 如果您想使用不同的语言环境(或者您不确定系统设置为哪个语言环境),您可以initdb
准确指示要使用哪个语言环境通过指定--locale
选项使用。
您可以使用createdb --locale
.
推荐阅读
- reactjs - React Web 中的 WC3 传感器
- php - 无法通过 AJAX jQuery 从 GET 请求中获得对 PHP API 的响应
- python - 二维 numpy 数组中的行或列最常见的元素
- c# - Asp.net core MVC Identity 添加获取
- python - 如何使用 Python Socket 检查服务器上是否有连接?
- excel - 如何阻止某人取消隐藏我的 Excel 工作表?
- spring-boot - Spring Boot 应用程序中的错误 - 无法映射重复的端点操作:[MBean call 'topology'] to topologyEndpoint
- docker - docker登录在gitlab上失败
- c++ - 关于 C++14 lambdas 的初始化捕获
- c++ - 在单元测试 C++ 类 gtest/gmock 时模拟成员函数