2012-04-01 12 views
23

Para la siguiente declaración de MySQL crear la base de datos, lo que sería el equivalente en PostgreSQL ?:UTF8 Postgresql Crear base de datos como MySQL (incluyendo el conjunto de caracteres, la codificación y lc_type)

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

Actualmente tengo:

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

¿Es eso suficiente o debería ser más específico, incluyendo LOCALE también?

Respuesta

38

Sí, puede ser más específico.

Por ejemplo:

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

También se recomienda leer las siguientes páginas sobre lugares y colaciones en PostgreSQL:

+0

Gracias Michael. Esto fue más una confirmación ya que se me ocurrió lo mismo; sin embargo, nunca veo ejemplos como este _en cualquier lugar_ pero siempre prefiero ser 100% explícito. Eché un vistazo a los documentos antes de hacer esta pregunta; Sin embargo, aunque todavía se me ocurrió exactamente la sintaxis que me diste, todavía no me sentía seguro de que no me estaba perdiendo algo. Eso para mí tiende a aludir al hecho de que los documentos podrían ser un poco mejores al proporcionar ejemplos. –

+1

Esto funcionó para mí, pero necesitaba agregar la siguiente restricción para que funcione: 'TEMPLATE = template0' – Lucas

+2

Las intercalaciones de pg son extremadamente confusas. En mysql, utf8mb4_unicode_ci es el estándar: todos los idiomas en una colación. Esto no es un comportamiento definido por RFC o ISO, ¡pero funciona! El objetivo de unicode/utf8 es admitir todos los idiomas * a la perfección *. Especificar utf8 y luego forzarlo a ordenar de acuerdo con una colación única como en_US no solo es confuso, sino inútil. El requisito es mostrar inglés, chino, japonés y otros en la misma página en algún tipo de orden definido. No puedo simplemente asumir que cada cliente está trabajando con un solo idioma principal. ¿Cómo diablos apoyar multi-idioma? –

Cuestiones relacionadas