Come disattivare MySQL Strict Mode

Alcuni Contenuto Sistemi di gestione come Typo, Contao, Contenido o altri sistemi hanno problemi di MySQL 5.1 disponibile Modalità Rigorosa. Questa è l'impostazione predefinita dalla versione 5.7.

Affinché si possano utilizzare anche questi sistemi CMS c'è ancora la possibilità di disattivare la modalità strict sul lato server. Naturalmente, questo è solo condizionalmente raccomandato.

Cosa fa la modalità Strict?

La stretta modalità di MySQL/MariaDB controlla come vengono gestiti i valori non validi o mancanti nelle query di modifica dei dati, incluse le dichiarazioni INSERT, UPDATE e CREATE.

Non valido o mancante Dati portano ad avvertimenti o errori quando la query SQL viene eseguita. Se la modalità Scrict è disattivata, le interrogazioni non valide o i valori mancanti vengono regolati e viene emesso un semplice avviso. Questo può portare a risultati inaspettati.

Un esempio sarebbe un limite di carattere. Se la modalità Strict è disattivata, i caratteri in eccesso saranno tagliati per adattarli.

Perché questo accade solo con alcuni sistemi CMS?

Si può solo speculare. Probabilmente il codice è talmente esteso che nessuno riesce a capirlo. Su un sistema di gestione dei contenuti lavorano molte persone, a volte portano funzioni individuali che poi non vengono più guardate per anni. Finché non si verificano problemi gravi non è poi così male.

Con un sistema come il whmcs, anch'esso interessato, la situazione è molto diversa. Se i dati importanti vengono troncati, si verificano assegnazioni errate. Questo può essere problematico nel caso di un accordo.

Dove possono essere applicate queste istruzioni?

Le istruzioni si riferiscono a sistemi Linux con MySQL 5.6/5.7 o MariaDB 10.1 e più in alto dove è attiva la Modalità Rigorosa.

Per apportare le modifiche è necessario l'accesso alle radici. Le nostre istruzioni si riferiscono sempre a Centos Linux. Con altre distribuzioni, i file di configurazione possono trovarsi in altre directory.

Passo 1: Creare backup

Quando si modificano i file, si dovrebbe sempre fare un backup. È troppo facile cancellare qualcosa inavvertitamente.

cp -a /etc/my.cnf{,.strict.bak}

Il comando crea un file my.cnf.strict.bak dal my.cnf.nella stessa directory.

Passo 2: Disattivare la modalità MySQL Strict

Il file normalmente non contiene sql_mode=... quindi la seguente riga dovrebbe essere aggiunta alla sezione [mysqld] :

sql_mode=""

Passo 3: Riavviare il servizio MySQL

Dopo aver modificato il file, il servizio deve essere riavviato per applicare le modifiche.

systemctl riavvio mariadb

Dopo il riavvio del servizio è possibile controllare l'impostazione eseguendo il seguente comando. Qui come esempio con la password su un Server Plesk. In alternativa con root e la password.

mysql -uadmin -p`cat /etc/psa/.psa.shadow` -e "SELECT @@sql_mode;".

Dovrebbe poi apparire il seguente ritorno:

+————+

| @@@sql_mode |

+————+

| |

+————+

Articoli attuali