我有一个带有UTF8编码和LC_ * en_US.UTF8的PostgreSQL数据库。数据库以多种不同的语言存储文本列。
但是在某些专栏中,我100%确定永远不会有任何特殊字符,即ISO国家和地区。货币代码。
我尝试过这样的事情:
"countryCode" char(3) CHARACTER SET "C" NOT NULL
和
"countryCode" char(3) CHARACTER SET "SQL_ASCII" NOT NULL
但这会带来错误
ERROR: type "pg_catalog.bpchar_C" does not exist
ERROR: type "pg_catalog.bpchar_SQL_ASCII" does not exist
我做错了什么?
更重要的是,我是否应该为此烦恼?我来自MySQL背景,这是一个性能和空间增强,这是PostgreSQL的情况吗?
TIA
答案 0 :(得分:2)
老实说,我没有看到这样设置的目的,如:
鉴于没有空间优势并且可能会有性能损失,我认为最好保留原样,即保留所有列的数据库默认编码。
我认为对于相同的参数,PostgreSQL不允许为数据库中的单个对象指定编码。 Character Set and Locale are set on the per-database level