Benvenuto in phpBB.it Lo Staff ti augura Buon Lavoro!
Login
     
Faq e Guide Faq e Guide Generiche Spostare db evitando problemi con lettere accentate UTF8
Spostare db evitando problemi con lettere accentate UTF8 PDF Stampa
Autore: Nicholas
Note: Spostare db evitando problemi con lettere accentate UTF8.

Per qualche motivo non molto chiaro, molto spesso esportando un database di phpBB via phpMyAdmin, e importandolo da qualche altra parte, si verifica un problema con le lettere accentate ed altri caratteri speciali che crea seri problemi al forum. In particolare tutti i messaggi, i titoli, i nomi dei forum ecc. vengono troncati dal primo carattere speciale in poi; nel caso dei nomi del forum questo può causare anche errori più gravi a livello di PHP e scompaginare completamente il forum. Vi riporto un modo (non molto ortodosso, ma per me ha funzionato) di eseguire l'operazione evitando tali problemi.

Testato trasferendo il database di phpBB3 da un server a un altro, aventi entrambi MySQL 4.1; immagino che possa funzionare similmente anche per phpBB2 e versioni diverse di MySQL, ma è da accertare.

In sintesi

  • Accertatevi che il database di destinazione abbia la stessa collazione di quello di origine.
  • Esportate il database in modalità compatibile MYSQL40 (può essere necessario o meno, dipende).
  • Per importare il file, invece di usare la funzione Importa di phpMyAdmin eseguite una query copiandovi manualmente il contenuto del dump del vecchio database.

In dettaglio

Operazioni preliminari: accertarsi che il db di destinazione abbia come collazione la stessa del db d'origine e non contenga tabelle con lo stesso nome di quelle che si vanno a importare; preferibilmente, disabilitare la board d'origine per evitare che il db venga modificato durante le operazioni di trasferimento (che possono richiedere diversi minuti).

collation
Collazione del db di origine, e come impostarlo in quello di destinazione

Dal database di origine esportare le tabelle di phpBB selezionandole e indicando come modo di compatibilità MYSQL40. Il file risultato può essere salvato (cioè scaricato come file sql oppure compresso zip o gzip), oppure no, nel qual caso viene visualizzato su schermo. Nel caso si scegliesse di salvare il file, sarà possibile aprirlo con qualsiasi applicazione, anche Notepad.

export
Esportazione (dump) delle tabelle di phpBB

Se guardate il file o il risultato su schermo, potete vedere che gli accenti compaiono correttamente. Quindi il problema non è nella fase di esportazione, bensì di importazione.
E il trucchetto è questo: nel database di destinazione, anziché importare il file salvato, fate una query SQL e incollateci il risultato dell'export precedente (ossia quello che avete ricevuto su schermo o salvato nel file .sql).

import
"Importazione" del dump esportato

Al termine, verificate che tutte le tabelle siano state importate e che il n° di record in ciascuna sia uguale nei due db.

UPDATE phpbb3_config SET config_value = 'www.miosito.it' WHERE config_name = 'cookie_domain';
UPDATE phpbb3_config SET config_value = '/cartellaforum/' WHERE config_name = 'cookie_path';
UPDATE phpbb3_config SET config_value = 'www.miosito.it' WHERE config_name = 'server_name';
UPDATE phpbb3_config SET config_value = '/cartellaforum/' WHERE config_name = 'script_path';

Nota in caso di database grandi

Se il database di phpBB supera anche i pochi megabyte di dimensione (se cioè la vostra board ha anche poche migliaia di messaggi), tenete presente che le operazioni di export e import possono richiedere diverso tempo (qualche minuto) e molta, molta memoria RAM. Esportando un database di 7MB il mio Firefox 2 è arrivato a occupare 400MB di RAM (non so come sia con altri browser), prendendosi lunghe pause di riflessione (con CPU al 100%) quando copiavo o incollavo qualcosa.

Consigli pratici:

  • tenete sotto mano Task Manager, può esservi utile per tenere sotto controllo la situazione ed uccidere il browser nel caso si pianti.
  • esportate e importate le tabelle più grosse, ossia posts, search_wordlist* e search_wordmatch* singolarmente (una alla volta), e le altre tutte insieme;.
  • abbiate pazienza: finché o la CPU lavora o si stanno trasmettendo/ricevendo dati non c'è motivo di allarmarsi; tenete presente che anche il server avrà bisogno di un po' di tempo per elaborare i dati inviati/ricevuti.

* Queste due solo se usate Fulltext native (quello predefinito) come metodo di indicizzazione e ricerca, mentre se usate Fulltext MySQL dovrebbero essere vuote.

 
phpBB.it Italian Communities