Archivio

Posts Tagged ‘mysql’

Convertire un database PostgreSQL in MySQL e viceversa

La conversione di un database PostgreSQL in mysql e viceversa non un’operazione esattamente banale.
Nel senso che a differenza della conversione da SQL Server a mysql o da Access ad esempio, per i quali esiste il tool realizzato direttamente da mysql, mysql Migration Toolkit, per PostgreSQL questo software non ci aiuta.

Durante la ricerca di qualcosa di ben funzionante mi sono imbattuto in:

DB Convert for mysql and PostgreSQL 2.0.x

Questo software consente in modalit trial di importare solo 10 record per tabella. E’ sufficiente nel caso sia necessario solo ripristinare la struttura, nel caso import di dati invece risulta insufficiente.

Per poter disporre delle funzionalit complete sufficiente acquistarlo ad una cifra ragionevole di 69 dollari.

Il software dopo l’installazione consente una comoda migrazione di tutto quanto. La migrazione pu essere bidirezionale.

La stessa software house propone altri tool come il sync.

Sono disponibili inoltre migrazioni da svariati altri database.

Per maggiori informazioni: http://www.dbconvert.com

Soluzione problemi codifica caratteri in MySQL/PHP

28 January 2006 maxgrante 22 commenti

Buongiorno a tutti,
innanzitutto cominciamo ad inquadrare il problema e a fare presente che se ora sono in grado di scrivere questo articolo grazie al supporto che ho ricevuto sul forum di HTML.IT da parte di Leandro Luccerini, per contatti: leandro980[AT]libero[DOT]it

PREMESSE AL PROBLEMA

  • mysql versione > 4.1.x
  • Tipo di encoding delle pagine web php utf8

DESCRIZIONE PROBLEMA

La situazione problematica nasce nel momento in cui abbiamo un sito web che deve gestire caratteri extra latini, per esempio nel mio caso ho affrontato questo problema dovendo realizzare un sito in lingua russa, ovvero utilizzando il cirillico.
Il mio approccio alla situazione e’ stato quello di realizzare TUTTE le pagine web con codifica utf8 e database, tabelle e campi di testo utf8 a loro volta.
La cosa che mi ha fatto impazzire e capirci veramente poco per diverso tempo e’ che se io inserivo nel database caratteri cirillici come ad esempio (Привет – ciao) e da PhpMyADMIN (di seguito PMA) vedevo male, idem il dump, mentre quando tiravo su i dati da applicativo tutto funzionava a meraviglia.
Capitava l’inverso con PMA, ovvero se inserivo in cirillico su PMA e visualizzavo da PMA tutto bene, via applicazione niente.

SOLUZIONE

Prima di tutto vi invito a leggervi questa parte di manualistica online di mysql, CHARSET.

Sostanzialmente sui server mysql di sistemi di hosting italiani (ma credo anche americani) e comunque in generale, l’impostazione del default_character_set impostata a latin1.
Ma anche qualora sia impostata ad utf8 quando via script php ci connettiamo al database mysql la nostra sessione di default (nonostante la pagina sia encodata utf8) sar attivata con character set latin1, cosa succede quindi, che i dati e le query che inviamo sfasano e il sistema memorizza erroneamente i dati.

Di fatto il comportamento giusto lo ha PMA, dobbiamo cercare quindi di emularlo.
Per farlo basta di fatto lanciare dopo ogni connessione la seguente query: SET NAMES utf8
Cos facendo la connessione tra client e server sar UTF8.

CONCLUSIONE

Per concludere possiamo dire che per siti che trattano lingua standard europee come italiano, inglese, francese etc… possiamo avere tutto il DB latin1, connessione client server latin1 ed encoding ISO-8859-1

Nel caso di siti con cirillico, arabo etc… utilizziamo tutto il database UTF8, encoding delle pagine UTF8 e soprattutto dobbiamo eseguire per sicurezza la query sopra indicata dopo ogni connessione con mysql.

Mi scuso per non essere stato molto chiaro in alcuni punti, purtroppo questo argomento complesso e fastidioso…
Se avete suggerimenti sono benvenuti.

Ciao a tutti. Max
info[AT]massimo-caselli[DOT]com