2012-04-01 7 views
23

Für die folgende MySQL-Datenbank-Anweisung erstellen, was das Äquivalent in postgresql wäre ?:UTF8 Postgresql Datenbank erstellen wie MySQL (einschließlich Zeichensatz, Codierung und LC_TYPE)

CREATE DATABASE IF NOT EXISTS `scratch` 
    DEFAULT CHARACTER SET = utf8 
    DEFAULT COLLATE = utf8_unicode_ci; 

ich derzeit haben:

CREATE DATABASE "scratch" 
    WITH OWNER "postgres" 
    ENCODING 'UTF8' 
    TABLESPACE "pg_default"; 

Ist das genug oder sollte ich spezifischer einschließlich LOCALE als auch sein?

Antwort

38

Ja, Sie können genauer sein.

Zum Beispiel:

CREATE DATABASE "scratch" 
    WITH OWNER "postgres" 
    ENCODING 'UTF8' 
    LC_COLLATE = 'en_US.UTF-8' 
    LC_CTYPE = 'en_US.UTF-8'; 

Auch empfehle ich die folgenden Seiten über Gebietsschema und Sortierungen in PostgreSQL zu lesen:

+0

Dank Michael. Dies war eher eine Bestätigung, als ich das gleiche erfand; Allerdings sehe ich nie solche Beispiele _irgendwo_, aber ich ziehe es immer vor, 100% explizit zu sein. Ich warf einen Blick auf die Dokumente, bevor ich diese Frage stellte. Aber während ich immer noch genau die Syntax entwickelte, die Sie mir gegeben hatten, war ich immer noch nicht zuversichtlich, dass ich etwas nicht vermisste. Das ist für mich eine Anspielung auf die Tatsache, dass die Docs ein bisschen besser darin sein könnten, Beispiele zu geben. –

+1

Dies funktionierte für mich, aber ich musste die folgende Einschränkung hinzufügen, um es funktionieren zu lassen: 'TEMPLATE = template0' – Lucas

+2

pgs Kollatierungen sind extrem verwirrend. Auf mysql ist utf8mb4_unicode_ci der Standard - alle Sprachen in einer Sortierung. Dies ist kein RFC- oder ISO-definiertes Verhalten, aber es funktioniert! Der ganze Sinn von Unicode/utf8 ist es, alle Sprachen * nahtlos * zu unterstützen. Um utf8 zu spezifizieren, und dann gezwungen werden, nach einer einzelnen Sortierung wie en_US zu sortieren, ist das nicht nur verwirrend, sondern nutzlos. Die Anforderung besteht darin, Englisch, Chinesisch, Japanisch usw. auf derselben Seite in einer bestimmten Reihenfolge anzuzeigen! Ich kann nicht einfach davon ausgehen, dass jeder Client mit einer einzigen Primärsprache arbeitet. Wie zum Teufel, Multi-Sprache zu unterstützen? –

Verwandte Themen