Mysql
 sql >> Database >  >> RDS >> Mysql

Come disabilitare la modalità rigorosa di MySQL

La modalità rigorosa di MySQL e MariaDB controlla come vengono gestiti i valori non validi o mancanti nelle query di modifica dei dati; questo include le istruzioni INSERT, UPDATE e CREATE TABLE. Con la modalità rigorosa MySQL abilitata, che è lo stato predefinito, i dati non validi o mancanti possono causare avvisi o errori quando si tenta di elaborare la query.

Quando la modalità rigorosa è disabilitata, la stessa query avrebbe i suoi valori non validi o mancanti regolati e produrrebbe un semplice avviso. Questo può sembrare il risultato preferito, tuttavia con la modalità rigorosa disabilitata alcune azioni possono causare risultati imprevisti; ad esempio, quando il valore inserito supera il limite massimo di caratteri, verrà troncato per rientrare nel limite.

Ci sono vari motivi per cui potrebbe essere necessario disabilitare la modalità rigorosa di MySQL, tuttavia il più comune è quando un server esegue WHMCS:questo è un requisito di quello strumento.

Controllo pre-volo

  • Queste istruzioni sono destinate specificamente alla disabilitazione della modalità rigorosa MySQL su un server Liquid Web gestito con cPanel.
  • Il server dovrebbe eseguire MySQL 5.6/5.7 o MariaDB 10.x
  • Per seguire questo tutorial sarà necessario l'accesso alla riga di comando e al livello root tramite SSH.

Passaggio n. 1:fai sempre i backup!

Ogni volta che si modificano i file su un server, è sempre consigliabile eseguire in anticipo una forma di backup. Questo ti assicura di avere un modo per ripristinare le modifiche se qualcosa va storto; è anche utile perché aiuta a tenere traccia di quando e quali modifiche sono state apportate.

Dopo aver effettuato l'accesso a SSH con l'utente root, procedi come segue:

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

Il comando precedente utilizza "Espansione parentesi graffa BASH" per eseguire una copia di backup del file nella sua directory originale.

Passaggio n. 2:disabilita la modalità rigorosa di MySQL

A seconda del server e delle configurazioni correnti, potrebbe essere necessario modificare uno o entrambi i seguenti file sul server. In genere, le righe di configurazione rilevanti si trovano solo in una di esse, tuttavia potrebbe trovarsi in una delle due senza causare problemi; quindi generalmente è meglio controllare entrambi.

Per modificare i file, aprirai il file con il tuo editor della riga di comando preferito. In questo esempio, utilizziamo 'vim'.

vim /usr/my.cnf
vim /etc/my.cnf

In vim, puoi premere "a" o "i" per accedere alla modalità di inserimento del testo; premendo il tasto Esc (Esc) sulla tastiera si torna alla modalità di comando. Per un aggiornamento sulla modifica dei file con vim, vedere il nostro Tutorial per nuovi utenti:Panoramica dell'editor di testo Vim.

All'interno di ogni file sopra cercherai una riga con il seguente contenuto:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Se trovi una riga simile alla precedente che sta impostando la variabile `sql_mode`, dovrai sostituirla con la seguente riga per disabilitare la modalità rigorosa di MySQL.

sql_mode=""

Una volta che questa regolazione è stata effettuata, o hai confermato che il file non ha bisogno di essere modificato, salverai e chiuderai il file.

Passaggio n. 3:riavvia il servizio MySQL

Infine, per rendere effettive queste modifiche, dovrai riavviare il servizio MySQL poiché leggerà i file di configurazione solo quando verrà caricato inizialmente. Per forzare MySQL a utilizzare i nuovi file di configurazione, esegui le seguenti operazioni:

Per i server CentOS 7:
systemctl restart mysql

Per CentOS 6 e precedenti:
/etc/init.d/mysql restart

Dopo aver eseguito questo comando sul server, il servizio MySQL verrà riavviato e caricherà le modifiche apportate. Se tutte le istruzioni sono state seguite e completate, la modalità rigorosa di MySQL dovrebbe ora essere disabilitata.

Per verificare che il processo sia stato completato correttamente puoi eseguire quanto segue:

mysql -e "SELECT @@sql_mode;"

L'output potrebbe essere simile al seguente:

+--------------------------------------------+
| @@sql_mode
+--------------------------------------------+
| NO_AUTO_CREATE_USER
+--------------------------------------------+

Se hai domande o non ti senti a tuo agio nell'apportare queste modifiche da solo, non esitare a contattare Heroic Support®.