Wordpress, backup e charsets

Technorati Tags: , , , , , , , , , , , ,
Wordpress

Siccome mi sto preparando a cercare una nuova casa virtuale smiley (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à smiley

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:

  1. Prendete i campi del DB in latin1_swedish_ci e li convertite dal loro formato dati normale (TEXT,VARCHAR,ENUM …smiley in BLOB (che è il formato binario). Segnatevi quelli che avete cambiato.
  2. 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.
  3. Completati i passi precedenti, cambiate il charset del database a utf8
  4. Cambiate la collation di ogni tabella a utf8_general_ci
  5. 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
  6. Ricreate gli indici che avevate eventualmente rimosso
  7. 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 smiley ), 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 smiley ), 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?

Post simili

Opzioni Post

RSS feed | Trackback URI

6 Commenti »

Comment da Doxaliber
2007-12-02 20:45:37

Credo esistano metodi decisamente più semplici, ne avevamo anche parlato se ti ricordi… smiley

 
Comment da Vortexmind
2007-12-02 22:21:57

Infatti ho specificato che avevo deciso di farmi del male smiley smiley

 
Comment da Miguel Subscribed to comments via email
2007-12-02 23:34:28

Passato anch’io oggi alla WP 2.3.1 smiley

 
Comment da Doxaliber
2007-12-03 13:08:57

Io ancora non sono passato a wp 2.3, mi sono impigrito. smiley

 
Comment da Silent Enigma
2007-12-09 05:16:56

non ci crederai ma qualcosina ho capito!

rivogliamo gli emoticon smiley

 
Comment da Vortexmind
2007-12-09 13:42:04

Già mi ero dimenticato … ora ci sono smiley

 
Nome (obbligatorio)
E-mail (required - never shown publicly)
URI
Il tuo commento (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> in your comment.

Captcha

Scrivi le lettere che vedi sopra (protezione Anti Spam)

Trackback responses to this post