UTF8 Postgresql像MySQL一样创建数据库(包括字符集,编码和lc_type)

Wil*_*III 24 postgresql ddl encoding collation character-encoding

对于以下MySQL创建数据库语句,postgresql中的等价物是什么?:

CREATE DATABASE IF NOT EXISTS `scratch` 
  DEFAULT CHARACTER SET = utf8
  DEFAULT COLLATE = utf8_unicode_ci;
Run Code Online (Sandbox Code Playgroud)

我目前有:

CREATE DATABASE "scratch"
  WITH OWNER "postgres"
  ENCODING 'UTF8'
  TABLESPACE "pg_default";
Run Code Online (Sandbox Code Playgroud)

这还不够,还是我应该更具体LOCALE一些?

小智 41

是的,你可以更具体.

例如:

CREATE DATABASE "scratch"
  WITH OWNER "postgres"
  ENCODING 'UTF8'
  LC_COLLATE = 'en_US.UTF-8'
  LC_CTYPE = 'en_US.UTF-8';
Run Code Online (Sandbox Code Playgroud)

另外,我建议阅读以下有关PostgreSQL中的语言环境和排序规则的页面:

  • pg的整理非常混乱.在mysql上,utf8mb4_unicode_ci是标准 - 一个排序规则中的所有语言.这不是RFC或ISO定义的行为,但它有效!unicode/utf8的重点是无缝支持所有语言*.要指定utf8,然后强制按照en_US这样的单个排序规则进行排序,这不仅令人困惑,而且毫无用处.要求是以某种定义的顺序在同一页面上显示英语,中文,日语等!我不能只假设每个客户都使用一种主要语言.如何支持多语言? (4认同)
  • 这对我有用,但我需要添加以下约束才能使其工作:`TEMPLATE = template0` (2认同)