Questo articolo fornisce istruzioni dettagliate sulla risoluzione di vari problemi di compatibilità del database MySQL, tra cui problemi di compatibilità ed errori di collazione delle tabelle.
Problemi di compatibilità
Per evitare problemi di incompatibilità del database, assicurarsi che le versioni del database tra il server di creazione e quello di installazione siano il più vicine possibile. Se il backup è stato creato su una versione di database più recente rispetto a quella in cui viene installato, si potrebbero verificare dei problemi.
È meglio assicurarsi che il server in cui viene eseguito il programma di installazione abbia un numero di versione uguale o superiore a quello del server in cui è stato creato. Se le versioni maggiore e minore sono uguali o vicine (ad esempio, [5.7 a 5.6]), la migrazione dovrebbe funzionare senza problemi. Una coppia di versioni da [5.7 a 5.1] è più probabile che causi problemi, a meno che non si abbia una configurazione molto semplice. Se le versioni sono troppo distanti tra loro, collaborate con il vostro provider di hosting per aggiornare il motore MySQL su questo server.
Soluzione 1: FORMATO UTF8MB4
Se la versione corrente del server MySQL rilevata è inferiore alla 5.5.3 (rilasciata l'8 aprile 2010), il supporto per le tabelle utf8mb4 non funzionerà. Il formato utf8mb4 è supportato solo da MySQL server 5.5.3+. Si consiglia vivamente di aggiornare la versione del server MySQL su questo server per essere più compatibile con le versioni recenti di WordPress ed evitare problemi di errori di installazione.
Soluzione 2: INGRESSI UTF8
Se vengono rilevati caratteri non ASCII come parte della stringa di connessione al database e il server MySQL non è configurato correttamente, non sarà possibile connettersi. Questo problema può essere risolto aggiornando la configurazione di MySQL my.ini.
Aggiungere l'impostazione character_set_server=utf8 in [mysqld] e riavviare il server di database. Potrebbe essere sufficiente decommentare questo valore.
Soluzione 3: SETUP MARIA-DB
Se compare una versione 10.N.N, allora la distribuzione del database è una versione MariaDB di MySQL. Sebbene le distribuzioni siano molto simili, esistono alcune sottili differenze. Alcuni sistemi operativi riportano una versione come "5.5.5-10.1.21-MariaDB" che mostra la correlazione di entrambe. Per maggiori dettagli, visitate la pagina online MariaDB versus MySQL - Compatibilità.
Si noti che alcuni messaggi sono semplici avvisi. Si consiglia di continuare il processo di installazione e di monitorare attentamente il file log.txt del programma di installazione e il rapporto di installazione che si trova al punto 3 del programma di installazione. Assicurarsi di cercare eventuali avvisi/avvertenze/errori in queste posizioni per verificare che il processo di installazione non abbia rilevato errori. Se si riscontrano problemi, visitare le pagine delle FAQ e consultare la domanda "Come risolvere gli errori del database o gli avvisi generali nel rapporto di installazione?".
Soluzione 4: CREARE TABELLE
La creazione di tabelle in MySQL e MariaDB è molto simile; tuttavia, ci sono alcune piccole differenze che a volte (non di frequente) possono causare problemi. Per vedere le differenze tra i due sistemi, consultate la documentazione qui:
Come si può notare, non si tratta di una corrispondenza univoca (MariaDB ha opzioni che MySQL non supporta), quindi quando si tenta di eseguire una query CREATE che funzionava su MariaDB ma che ha qualche opzione di tabella non supportata da MySQL, potrebbe fallire. La soluzione attuale consiste nel rimuovere le opzioni della tabella incriminata dal dump del DB eseguendo una ricerca e una sostituzione manuale sul file.
Problemi di collazione delle tabelle
Come risolvere la modalità di compatibilità e gli errori "Collation sconosciuta"?
Esistono 4 modi per risolvere questo problema. L'opzione 1 è il modo più rapido, semplice e sicuro per risolvere il problema.
Panoramica sulla fascicolazione sconosciuta
Un errore "Collation sconosciuta" significa che il server MySQL installato (server di destinazione) è più vecchio del motore MySQL su cui è stato creato il backup. Un messaggio di errore come:
ERROR database error write 'Unknown collation: 'utf8mb4_unicode_ci'
verrà attivato perché la versione di MySQL utilizzata non supporta questo formato di tabella. È possibile visualizzare il confronto della versione del server MySQL facendo clic sul pulsante "Test Connection" nel programma di installazione o visualizzando il file installer-log.txt. L'output sarà simile a:
VERSIONE MYSQL: Questo server: 5.4.22 - Build Server: 5.7.10
Opzione 1 - Aggiornamento del software del database
Il modo più pulito e sicuro per risolvere il problema "Unknown Collation" è aggiornare il server MySQL di destinazione alla stessa versione o a una versione più recente di quella in cui è stato creato il backup. Gli errori di formato più comuni includono:
- utf8mb4_unicode_ci: è richiesto il server MySQL 5.5.3+.
- utf8mb4_unicode_520_ci: è richiesto MySQL server 5.6+.
La soluzione migliore: il modo migliore e più semplice per risolvere questo problema è chiedere al vostro host di spostare il vostro account su un server MySQL che supporti il tipo di collation di cui avete bisogno (vedi esempio sopra). È sufficiente fornire il messaggio di errore che si sta ricevendo e l'host potrà aiutarvi a spostarvi sul server corretto.
La maggior parte degli host non aggiornerà il server su cui si trova il vostro sito; tuttavia, dovrebbero essere in grado di spostare facilmente il vostro account su un server più recente. Si tratta di una pratica molto comune e un buon host dovrebbe essere in grado di aiutarvi abbastanza facilmente.
Se state utilizzando una versione inferiore alla 5.5.3, allora state usando una versione molto obsoleta di MySQL server. La versione 5.5.3 è stata rilasciata nel 2010, il che significa che la versione del server MySQL in uso è ancora più vecchia. Incoraggiamo vivamente gli utenti a collaborare con i loro host per utilizzare software aggiornati per migliorare la sicurezza e le prestazioni e per rimanere conformi agli aggiornamenti del core di WordPress. Non lasciate che un host scadente utilizzi un software obsoleto sul vostro sito.
Opzione 2 - Set di caratteri e ordinamento predefiniti
Nel programma di installazione, al punto 2 delle opzioni, la casella di controllo "Legacy" non esiste più. Tuttavia, ora viene rilevata e impostata automaticamente. Se il set di caratteri e la collazione non sono definiti esplicitamente, apparirà un avviso che indica che verranno utilizzati il set di caratteri e la collazione predefiniti.
Quando si crea una tabella di database, la versione di MySQL utilizzata potrebbe non supportare il tipo di collation della versione di MySQL in cui è stata creata la tabella. In questo caso, il programma di installazione farà automaticamente un fallback del tipo di collation per cercare di creare la tabella.
Opzione 3 - Eseguire la modalità di compatibilità
La modalità di compatibilità Mysqldump aiuta a produrre un output di script SQL del database più compatibile con altri sistemi di database o con i vecchi server MySQL.
The Duplicator supporta diverse modalità di compatibilità, tutte disponibili solo quando la modalità mysqldump è abilitata nel plugin. La modalità di compatibilità può essere attivata quando si crea un backup usando l'opzione mysqldump.
Il Duplicatore consente la modalità di compatibilità solo durante il processo di creazione. Non è consentita durante la creazione di modelli o con le pianificazioni. Il motivo di questa impostazione è di scoraggiare l'uso di queste impostazioni e di risolvere il vero problema, ovvero l'aggiornamento del server di database.
Aggiornamenti del database: La modalità di compatibilità deve essere usata solo come ultima risorsa. L'approccio consigliato per risolvere i problemi del database è quello di assicurarsi che entrambi i server di database siano aggiornati e con numeri di versione molto vicini (vedere l'opzione 1). Ad esempio, se il server di database in cui è stato creato il backup è 5.7.5, il server di database in cui è stato installato il backup dovrebbe essere almeno nell'intervallo 5.7.N. Chiedete al vostro host o all'amministratore del server di aggiornare il server MySQL a una versione più recente, se possibile. Se l'host non è disposto ad aggiornare a una versione recente, chiedetegli di aggiornare a una versione più recente possibile.
Conservazione dei dati: Sebbene su Internet si trovino diverse soluzioni (opzione 4) che spiegano come modificare il file SQL corrente o utilizzare la modalità di compatibilità mysqldump, il problema principale è che i dati sono stati memorizzati in un formato e ora devono essere convertiti. Queste tecniche possono portare alla perdita di dati e a problemi di incompatibilità in seguito. L'approccio corretto è quello di aggiornare il software MySQL.
Considerate di provare entrambe le modalità:
- Duplicator supporta attualmente due modalità diverse: Mysqldump e Modalità PHP (vedere l'opzione Impostazioni " Backup).
- Se si verificano problemi con i caratteri e si è a corto di opzioni, si può considerare di provare a costruire il database in entrambe le modalità per vedere se una o l'altra risolve i problemi.
Opzione 4 - Configurazioni manuali
Queste opzioni sono riservate agli utenti avanzati e devono essere eseguite con cautela. Le opzioni richiedono l'aggiornamento dello script database.sql o l'aggiornamento dei tipi di collazione delle tabelle del database di origine. Di seguito sono riportati tre approcci diversi; per risolvere il problema è sufficiente una sola opzione.
Aggiornare database.sql
Per i problemi di "fascicolazione sconosciuta" è possibile provare a eseguire i seguenti passaggi:
- Estrarre manualmente il file zip dell'archivio.
- Aprire il file database.sql con il blocco note e cercare e sostituire le collazioni. Ad esempio, si potrebbe:
- sostituire: "utf8mb4" con "utf8".
- sostituire: 'utf8_unicode_520_ci' con 'utf8_general_ci'.
Provare sempre queste opzioni in una sandbox e mai su un sito di produzione, finché non si è sicuri dei risultati.
Quindi navigare nel file installer.php sul server e scegliere Advanced e selezionare "Manual Extract".
Questo può essere tentato anche con altre collation (per esempio, sostituire 'collation_type_1' con 'collation_type_2').
Aggiornare il database di origine con il codice
Questa opzione richiede una conoscenza approfondita del sistema e l'esecuzione di backup in anticipo. Lo script consente di modificare la collazione sul server di compilazione in modo che possa essere supportata dal server di destinazione. Lo script completo può essere visto su Stack Overflow all'indirizzo: http://stackoverflow.com/a/29939906/2808424
Aggiornare il database di origine con l'IDE
Se non ci si sente a proprio agio nell'eseguire il codice di cui sopra, si può anche utilizzare un IDE o uno strumento GUI che consenta di modificare manualmente i collanamenti delle tabelle con istruzioni SQL o tramite un'interfaccia. Anche in questo caso, queste opzioni richiedono una conoscenza approfondita del sistema e l'esecuzione di backup in anticipo.
Di seguito sono riportate alcune istruzioni passo-passo facili da seguire per aggiornare le collazioni tramite un IDE come phpMyAdmin: