Configurazione DB per WriteFreely

Seguendo la guida all'installazione di #WriteFreely, nel caso si scelga di usare #MySQL come database, il consiglio è quello di impostare il set di caratteri a latin1 e la collation a latin1_swedish_ci:

CREATE DATABASE writefreely CHARACTER SET latin1 COLLATE latin1_swedish_ci;

Il motivo di questo setup è sostanzialmente “storico”, dovuto alle origini di MySQL che, come dovreste sapere, è stato inizialmente sviluppato da un'azienda svedese.

Tuttavia, prima di installare il software in produzione, mi sono chiesto se non fosse meglio adottare un set di caratteri e una collation differente, in modo da supportare anche caratteri multibyte come le emoji e i caratteri delle lingue che usano alfabeti diversi da quelli europei.

Utilizzare il set di caratteri utf8mb4 potrebbe “dare fastidio” agli script di migrazione del database in occasione di aggiornamenti software. Tuttavia sembra che questi problemi riguardino esclusivamente versioni di MySQL precedenti la 8.0.

Per fugare i dubbi in maniera piuttosto empirica, senza andare a spulciare il codice, ho fatto qualche breve test in locale impostando il database come segue:

CREATE DATABASE writefreely CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

per avere una collation con lo standard Unicode 9.0.

Successivamente ho installato una versione vecchia di WriteFreely, in particolare la 0.16, ed ho scritto una serie di post utilizzando caratteri unicode, impostando alcuni post come pinned e utilizzando anche gli hashtag, notoriamente problematici quando si usa WriteFreely con MySQL 8.

Non avendo riscontrato problemi di sorta, ho poi provveduto a fare l'aggiornamento dalla versione 0.16 a quella corrente, la 0.17.2, in modo da innescare gli script di migrazione del database.

Il risultato non ha mostrato anomalie di sorta, tutti i post continuavano ad essere mostrati correttamente con i loro caratteri multibyte, come anche i pinned post e gli hashtag.

Forte di questa verifica, sicuramente spartana ma comunque significativa, ho concluso che potevo usare lo stesso setup del database anche in produzione.