Wordpress, backup e charsets

Siccome mi sto preparando a cercare una nuova casa virtuale
(essendomi ormai stufato delle limitazioni del provider attuale), oggi ho deciso di farmi del male e di controllare in che stato era messo il mio database. Con grande orrore, mi sono reso conto che tutta la mia produzione letteraria online era stata catalogata in MySql utilizzando il terrificante charset latin1_swedish_ci. Al fine di rendermi comprensibile verso la lurida plebaglia che mi legge, dirò solamente che utilizzare questo set di caratteri produce infiniti mal di testa e induce terrificanti incubi notturni a base di technovikinghi vestiti da centurioni romani che sbraitano cose tipo “Ëãþõý” e nel mentre cercano di uccidervi con il martello di thor.
Avevo già avuto un’assaggio di questo problema due anni fa, quando fui costretto a levare baracca e burattini da Excom senza prepararmi per tempo. Questa volta non era il caso di rovinare nuovamente i miei post, e di rendere quindi il mio database (e il blog) UTF-8 compatibile.
Cercando in rete, ho trovato questa guida che spiega abbastanza bene cosa fare. Tuttavia siccome sono figo e lo devo rinfacciare a tutti, ho eseguito questa operazione al volo e senza fare alcun backup. Anche perchè i backup creati da PhpMyAdmin erano già infarciti di inguardabili caratteri swedishdestocazz. E quest’hosting non prevede l’accesso da shell, grazie al quale avrei potuto scrivere aborti tipo
/usr/local/bin/mysqldump –default-character-set=utf8 -u zoofilia_lover -p –all-databases –add-drop-table –add-locks –create-options –disable-keys –extended-insert –lock-tables –quick
E ottenere conseguentemente risultati tipo:
‘ÃåíéêÜ ôå?íéêÜ æçô?ìáôá’
‘ÃåíéêÜ ôå÷íéêÜ æçôÞìáôá’
‘ÃåÃéêÜ ôå÷ÃéêÜ æçôÞìáôá’
Ebbene, mi sono armato di santa pazienza e ho modificato a mano ogni singolo campo del database utilizzando la procedura descritta, ma limitandomi solamente alle tabelle e ai campi di cui mi fregava qualcosa (del tipo post_content, tanto per citarne uno inutile inutilissimo). Per gli altri ho adottato la sempre valida regola del chi vivrà, vedrà 
La logica del procedimento, spiegata anche da quell’articolo che ho linkato, è la seguente. Una persona normale prenderebbe i propri campi codificati in latin1_swedish_ci e li porterebbe direttamente a utf8_general_ci, sperando che il database sttostante si smazzi le necessarie conversioni. Purtroppo se fate così compaiono technovikinghe strane in mezzo ai vostri articoli, e non potete più tornare indietro (dato che non avete fatto il backup o lo avete fatto male. Se lo avete fatto bene vi meritate una pacca sulla spalla).
Pare però che passando attraverso il formato binario, la conversione venga effettuata correttamente (e non voglio neanche sapere perchè). Quindi:
- Prendete i campi del DB in latin1_swedish_ci e li convertite dal loro formato dati normale (TEXT,VARCHAR,ENUM …
in BLOB (che è il formato binario). Segnatevi quelli che avete cambiato. - Compiendo questa operazione, può accadere che per alcuni campi il database lanci madonne e vi impedisca di procedere. Questo perchè in molti casi ci sono degli indici definiti che vanno rimossi (segnandovi ovviamente quelli che avete tolto). Ovviamente se c’è un indice FULLTEXT definito su un VARCHAR che improvvisamente vuole diventare un BLOB … il database non è molto felice. Credo che in Iran sia prevista la lapidazione per chi tenta operazioni simili.
- Completati i passi precedenti, cambiate il charset del database a utf8
- Cambiate la collation di ogni tabella a utf8_general_ci
- Vi rismazzate tutti i campi che avevate fatto diventare BLOB e li riportate al formato originale, ricordandovi di cambiare il charset del campo in utf8_general_ci
- Ricreate gli indici che avevate eventualmente rimosso
- Settate il wp_config.php introducendo le informazioni sul charset e sulla collation
Io ho fatto così, utilizzando direttamente l’interfaccia di PhpMyAdmin, e pare aver funzionato. Certo, per molti campi me ne sono fregato (nè avevo voglia di scrivere uno script
), ma sembra che per quelli veramente importanti (titoli, corpi dei post e commenti) non ci siano problemi.
Questo ovviamente è un metodo cazzone e non ho alcuna responsabilità se voi nella vostra inettitudine vi piallate il database e vi rovinate la preziosa collezione di trollate da antologia.
Se volete prima impratichirvi con queste simpatiche operazioni senza dovervi poi suicidare perchè avete cancellato il vostro blog, scaricatevi qualcosa tipo XAMPP e giocateci in locale.
Ho visto anche che in giro ci sono degli script che dovrebbero fare tutto in automatico. Io non avevo la possibilità di fare un backup (diciamo che non avevo voglia
), per cui ho preferito fare da me per potermi insultare da solo in caso di fallimento.
Ah, sono passato anche a WP 2.3.1. Wow.
Io ho sconfitto le lettere technovikinghe, e tu?





Credo esistano metodi decisamente più semplici, ne avevamo anche parlato se ti ricordi…
Infatti ho specificato che avevo deciso di farmi del male

Passato anch’io oggi alla WP 2.3.1
Io ancora non sono passato a wp 2.3, mi sono impigrito.
non ci crederai ma qualcosina ho capito!
rivogliamo gli emoticon
Già mi ero dimenticato … ora ci sono