pg.ddx.io pgsql-it-generale@postgresql.org mailing list archive
help / color / mirror / Atom feedNovità -- problema Cinese in DB UTF8
5+ messages / 2 participants
[nested] [flat]
* Novità -- problema Cinese in DB UTF8
@ 2013-08-12 08:36 ciifrancesco@tiscali.it <ciifrancesco@tiscali.it>
0 siblings, 1 reply; 5+ messages in thread
From: ciifrancesco@tiscali.it @ 2013-08-12 08:36 UTC (permalink / raw)
To: pgsql-it-generale
Salve,
ho una novità: invece di cercare nel codice ho osservato meglio il db. Prima non ci avevo fatto caso perché ripeto, facendo gli inserimenti manualmente, questi funzionavano.
Adesso ho confrontato con un DB in cui ho fatto i test unitari, e dove tutto va alla perfezione.
Confrontiamo i DB:
A. Questo funziona solo se scrivo le query a mano:
Name | Owner | Encoding | Collate | Ctype | Access privileges
------------+-------+----------+---------+-------+-------------------
mioDB_A | pgsql | UTF8 | C | C |
B. Questo funziona sempre:
Name | Owner | Encoding | Collation | Ctype | Access privileges
----------------+----------+----------+-------------+-------------+-----------------------
serverDB_B | pgsql | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
La domanda adesso è più semplice: come posso modificare Collate e Ctype di B per renderlo lo stesso di A?
Mentre cerco, se qualcuno potesse darmi una dritta mi aiuterebbe molto. O anche dirmi se il problema potrebbe essere quello.
Cordiali saluti e grazie,
Francesco
----Messaggio originale----
Salve,
>senza dover investire il proprio tempo nei preparativi che, in
>effetti, spetterebbero a chi chiede aiuto.
speravo di trovare
qualcuno che avesse affrontato il problema e che quindi sapesse
direttamente dove mettere mano, anche perché è difficile
riprodurre
quella situazione (mi connetto ad un server dove eseguo un programma).
La ringrazio per il suo tempo, mi rendo conto che non è una
situazione
facile da capire a distanza.
Cordiali saluti,
Francesco
Invita i tuoi amici e Tiscali ti premia! Il consiglio di un amico vale più di uno spot in TV. Per ogni nuovo abbonato 30 € di premio per te e per lui! Un amico al mese e parli e navighi sempre gratis: http://freelosophy.tiscali.it/
^ permalink raw reply [nested|flat] 5+ messages in thread
* Re: Novità -- problema Cinese in DB UTF8
@ 2013-08-12 08:58 Gianni Ciolli <gianni.ciolli@2ndquadrant.it>
parent: ciifrancesco@tiscali.it <ciifrancesco@tiscali.it>
0 siblings, 0 replies; 5+ messages in thread
From: Gianni Ciolli @ 2013-08-12 08:58 UTC (permalink / raw)
To: pgsql-it-generale
On Mon, Aug 12, 2013 at 10:36:00AM +0200, ciifrancesco@tiscali.it wrote:
> La domanda adesso è più semplice: come posso modificare Collate e Ctype di B per renderlo lo stesso di A?
Purtroppo non è possibile modificare LC_COLLATE e LC_CTYPE per un
database esistente. Occorre creare un nuovo database, specificando i
valori desiderati in fase di creazione:
CREATE DATABASE ... LC_CTYPE = '...' LC_COLLATE = '...' TEMPLATE template0;
(info: http://www.postgresql.org/docs/9.2/static/sql-createdatabase.html)
e poi ripristinare i vecchi dati nel nuovo database, con un backup
logico.
(info: http://www.postgresql.org/docs/9.2/static/backup-dump.html)
Le versioni precedenti alla 8.4 non permettono di avere impostazioni
di LC_COLLATE e LC_CTYPE a livello di database: tutti i database dello
stesso cluster hanno le stesse impostazioni, decise durante la
creazione del cluster. D'altro canto tali versioni non sono ormai più
supportate e non dovrebbero quindi essere usate in produzione.
Cordiali saluti,
Dr. Gianni Ciolli - 2ndQuadrant Italia
PostgreSQL Training, Services and Support
gianni.ciolli@2ndquadrant.it | www.2ndquadrant.it
PGDay 2013 - 7° Conferenza Italiana su PostgreSQL
Prato, 25 ottobre 2013 | http://2013.pgday.it/
--
Sent via pgsql-it-generale mailing list (pgsql-it-generale@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-it-generale
^ permalink raw reply [nested|flat] 5+ messages in thread
* Novità -- problema Cinese in DB UTF8
@ 2013-08-14 07:45 ciifrancesco@tiscali.it <ciifrancesco@tiscali.it>
0 siblings, 1 reply; 5+ messages in thread
From: ciifrancesco@tiscali.it @ 2013-08-14 07:45 UTC (permalink / raw)
To: pgsql-it-generale
Allora,
ho fatto i seguenti passi:
1. ho modificato i template in modo che anche essi siano:
Name | Owner | Encoding | Collate | Ctype | Access privileges
----------+-------+----------+-------------+-------------+-------------------
postgres | pedro | UTF8 | it_IT.UTF-8 | it_IT.UTF-8 |
mioDB | pedro | UTF8 | it_IT.UTF-8 | it_IT.UTF-8 |
template0 | pedro | UTF8 | it_IT.UTF-8 | it_IT.UTF-8 |
template1 | pedro | UTF8 | it_IT.UTF-8 | it_IT.UTF-8 |
Non mi piacciono i nomi di nazioni o lingue per del testo universale, ma da quanto ho capito, qualsiasi collate o Ctype/Collate che finisce per UTF-8 va bene (+ dettagli nella guida in PS che metto perché può essere utile a qualcuno).
2. ho fatto un dump. Siccome non avevo memoria sufficiente, ho dovuto farlo compresso:
pg_dump dbname | gzip > filename.gz3. ho quindi eliminato mioDB e l'ho ricreato come si vede sopra, con collate e Ctype corretti
4. quindi cerco di rimettere i dati nel DB:
gunzip -c filename.gz | psql dbnamema il DB risulta vuoto a dispetto della lunghezza dell'operazione e l'assenza di errori. Usare il metodo
cat filename.gz | gunzip | psql dbnamenon cambia niente. Entrambi sono su http://www.postgresql.org/docs/9.1/static/backup-dump.html
mioDB=# \dv
No relations found.
Se avete qualche idea...
Francesco
PS
per convertire i template dò questa procedura, che in italiano non facilmente si trova. Devo fare una forte critica a google, che nonostante avessi fatto delle ricerche usando parole chiave simili, non mi ha portato alle pagine con questa procedura. Credo sia a causa delle ricerche personalizzate che fanno arrivare utenti diversi a risultati diversi, ma così facendo oscurano una parte del web o la rendono più irraggiungibile, come per me la pagina https://gist.github.com/ffmike/877447 -- dalla quale mi sono ispirato e che ho completato per modificare anche i collate e ctype dei template:
postgres # update pg_database set datallowconn = TRUE where datname = 'template0';
postgres # \c template0
template0 # update pg_database set datistemplate = FALSE where datname = 'template1';
template0 # drop database template1;
template0 # create database template1 with template = template0 encoding = 'UTF8' LC_COLLATE = 'it_IT.UTF-8' LC_CTYPE = 'it_IT.UTF-8';
template0 # update pg_database set datistemplate = TRUE where datname = 'template1';
template0 # \c template1
template1 # drop database template0;
template1 # create database template0 with template = template1 encoding = 'UTF8' LC_COLLATE = 'it_IT.UTF-8' LC_CTYPE = 'it_IT.UTF-8';
template1 # drop database postgres;
template1 # create database postgres with template = template1 encoding = 'UTF8' LC_COLLATE = 'it_IT.UTF-8' LC_CTYPE = 'it_IT.UTF-8';
template1 # update pg_database set datallowconn = FALSE where datname = 'template0';
(idem se usate altri template per sapere i formati supportati dalla vostra macchina, ad esempio it_IT.UTF-8 digitate il comando locale, ovviamente su linux)
Invita i tuoi amici e Tiscali ti premia! Il consiglio di un amico vale più di uno spot in TV. Per ogni nuovo abbonato 30 € di premio per te e per lui! Un amico al mese e parli e navighi sempre gratis: http://freelosophy.tiscali.it/
^ permalink raw reply [nested|flat] 5+ messages in thread
* Re: Novità -- problema Cinese in DB UTF8
@ 2013-08-16 11:39 Gianni Ciolli <gianni.ciolli@2ndquadrant.it>
parent: ciifrancesco@tiscali.it <ciifrancesco@tiscali.it>
0 siblings, 1 reply; 5+ messages in thread
From: Gianni Ciolli @ 2013-08-16 11:39 UTC (permalink / raw)
To: pgsql-it-generale; +Cc: ciifrancesco@tiscali.it <ciifrancesco@tiscali.it>
On Wed, Aug 14, 2013 at 09:45:28AM +0200, ciifrancesco@tiscali.it wrote:
> Allora,
> ho fatto i seguenti passi:
> 1. ho modificato i template in modo che anche essi siano:
>
> Name | Owner | Encoding | Collate | Ctype | Access privileges
> ----------+-------+----------+-------------+-------------+-------------------
> postgres | pedro | UTF8 | it_IT.UTF-8 | it_IT.UTF-8 |
> mioDB | pedro | UTF8 | it_IT.UTF-8 | it_IT.UTF-8 |
> template0 | pedro | UTF8 | it_IT.UTF-8 | it_IT.UTF-8 |
> template1 | pedro | UTF8 | it_IT.UTF-8 | it_IT.UTF-8 |
È fortemente sconsigliato alterare template0, che infatti non può
essere alterato senza seguire procedure discutibili come quella
riportata in calce.
Se non si vuole o può usare il template di default template1, che
infatti è editabile, si può fare una copia di template0 e poi alterare
questa copia. Funziona ugualmente, dal momento che nel creare un nuovo
database si può usare un qualsiasi database come template.
> 4. quindi cerco di rimettere i dati nel DB:
> gunzip -c filename.gz | psql dbnamema il DB risulta vuoto a dispetto della lunghezza dell'operazione e l'assenza di errori. Usare il metodo
> cat filename.gz | gunzip | psql dbnamenon cambia niente. Entrambi sono su http://www.postgresql.org/docs/9.1/static/backup-dump.html
> mioDB=# \dv
> No relations found.
Non è possibile che, in assenza di errori, i dati non siano stati
ripristinati. Quasi sicuramente le nuove tabelle sono state create in
degli schemi che non sono contenuti nel search_path, e quindi non sono
visibili con un semplice "\dv".
Con "\dn" si vedono tutti gli schemi disponibili.
Riferimenti su search_path:
http://www.postgresql.org/docs/9.3/static/ddl-schemas.html#DDL-SCHEMAS-PATH
Cordiali saluti,
Dr. Gianni Ciolli - 2ndQuadrant Italia
PostgreSQL Training, Services and Support
gianni.ciolli@2ndquadrant.it | www.2ndquadrant.it
--
Sent via pgsql-it-generale mailing list (pgsql-it-generale@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-it-generale
^ permalink raw reply [nested|flat] 5+ messages in thread
* Re: Novità -- problema Cinese in DB UTF8
@ 2013-08-16 12:33 Gianni Ciolli <gianni.ciolli@2ndquadrant.it>
parent: Gianni Ciolli <gianni.ciolli@2ndquadrant.it>
0 siblings, 0 replies; 5+ messages in thread
From: Gianni Ciolli @ 2013-08-16 12:33 UTC (permalink / raw)
To: Michel van der Grinten <m.vdgrinten@nibble-it.nl>; +Cc: ciifrancesco@tiscali.it <ciifrancesco@tiscali.it>; pgsql-it-generale
Hi Michel,
On Fri, Aug 16, 2013 at 02:03:51PM +0200, Michel van der Grinten wrote:
> It's just that we dont speak Italian that well.
This is an Italian-speaking mailing list, which you must have
subscribed by mistake ;-)
> Or you translate in English other wise please get me off this
> mailinglist, as I don't understand.
I am not the mailing list manager, just a member. I think you should
unsubscribe your address from this list:
http://www.postgresql.org/community/lists/subscribe/
and then consider subscribing other PostgreSQL mailing list:
http://www.postgresql.org/community/lists/
Best wishes,
Dr. Gianni Ciolli - 2ndQuadrant Italia
PostgreSQL Training, Services and Support
gianni.ciolli@2ndquadrant.it | www.2ndquadrant.it
--
Sent via pgsql-it-generale mailing list (pgsql-it-generale@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-it-generale
^ permalink raw reply [nested|flat] 5+ messages in thread
end of thread, other threads:[~2013-08-16 12:33 UTC | newest]
Thread overview: 5+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2013-08-12 08:36 Novità -- problema Cinese in DB UTF8 ciifrancesco@tiscali.it <ciifrancesco@tiscali.it>
2013-08-12 08:58 ` Gianni Ciolli <gianni.ciolli@2ndquadrant.it>
2013-08-14 07:45 Novità -- problema Cinese in DB UTF8 ciifrancesco@tiscali.it <ciifrancesco@tiscali.it>
2013-08-16 11:39 ` Gianni Ciolli <gianni.ciolli@2ndquadrant.it>
2013-08-16 12:33 ` Gianni Ciolli <gianni.ciolli@2ndquadrant.it>
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox