Ottenete oggi il miglior plugin per il backup e la migrazione di WordPress
Ottenere Duplicator ora

Documentazione del Duplicatore

Documentazione, materiali di riferimento ed esercitazioni per Duplicator

Gestione dei problemi di scrittura del database

Questo articolo fornisce istruzioni dettagliate sulla risoluzione di vari problemi del database MySQL, tra cui errori di scrittura, errori di creazione del database, problemi di compatibilità ed errori di collazione delle tabelle.

Errori di scrittura del database

Se il server di destinazione è MySQL 5.7+ e il log di Duplicator mostra errori come: ERROR database error write '...', è possibile che si verifichino problemi durante l'esecuzione di MySQL in modalità strict. In questo caso, provare le seguenti opzioni:

Messaggi di errore comuni

  • ERRORE DB: Impossibile ottenere la query CREATE per la tabella wp_XYZ. Informazioni errate nel file: './database_store/wp_XYZ.frm'.
  • ERRORE DATABASE: questa funzione non ha nessuna delle opzioni DETERMINISTIC, NO SQL o READS SQL DATA nella dichiarazione e nella registrazione binaria...
  • Lo spazio tabellare per la tabella xxx esiste. Scartate lo spazio tabelle prima di importare

Soluzione 1

Per gli errori generali di scrittura, ci sono alcune opzioni da considerare. Provatele nell'ordine in cui sono presentate. La soluzione più rapida è l'OPZIONE A, tuttavia, se si vuole che l'opzione sia permanente sul server, considerare l'OPZIONE B.

    OPZIONE A

    • Attivare la modalità avanzata del programma di installazione.
    • In Opzioni " Database " Impostazioni di estrazione, selezionare Personalizzato per le impostazioni della modalità e inserire NO_ENGINE_SUBSTITUTION nella casella di testo.
    • Continuare e completare il processo di installazione.

    OPZIONE B

    • Aprire questo file con il blocco note: C:\wamp64\bin\mysql\mysql5.7.9\my.ini
    • Aggiungere la riga finale al file:
      [mysqld]
      port = 3306
      sql_mode=NO_ENGINE_SUBSTITUTION
    • Riavviare il server MySQL (gli host economici potrebbero dover contattare il proprio provider di hosting).
    Se le OPZIONI A/B non funzionano, procedere come segue:
    • Accedere al server come root e creare il file /etc/mysql/conf.d/disable_strict_mode.cnf.
    • Aprite il file e inserite queste due righe:
      [mysqld]
      sql_mode=IGNORE_SPACE, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION
    • Riavviare MySQL eseguendo: $ sudo service mysql restart

    La procedura sopra descritta proviene da serverpilot.io.

    Soluzione 2

    Risolvere i problemi di scrittura per le query di creazione relativi al seguente messaggio di errore:
    Messaggio di ECCEZIONE: DB ERROR: Impossibile ottenere la query CREATE per la tabella wp_XYZ. Informazioni errate nel file: './database_store/wp_XYZ.frm'.

    • Eseguite una riparazione del database sul vostro sito WordPress attuale.
    • In Installer Step 2 " Tabelle " Deselezionare il flag Importa per la tabella che genera il problema.
    • In alternativa, quando si crea un backup al punto 1, escludere la tabella in questione dall'aggiunta.

    Soluzione 3

    Risolvere i problemi di scrittura per le funzioni relativi al seguente messaggio di errore:
    DATABASE ERROR: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the lesssafe log_bin_trust_function_creators variable)

    Eseguite quanto segue nella console di MySQL OPPURE aggiungete quanto segue al file di configurazione mysql.ini:

    SET GLOBAL log_bin_trust_function_creators = 1;
    log_bin_trust_function_creators = 1

    L'impostazione allenta il controllo delle funzioni non deterministiche. Le funzioni non deterministiche sono funzioni che modificano i dati (cioè hanno istruzioni di aggiornamento, inserimento o cancellazione).
    Per ulteriori informazioni, vedere qui. Per i dettagli completi, vedere questo articolo.

    Se il vostro provider di hosting non consente le impostazioni di cui sopra, contattatelo direttamente o prendete in considerazione la possibilità di collaborare con lo sviluppatore che ha scritto le funzioni e di farle rivalutare per farle funzionare correttamente con i requisiti del motore di database.

    Soluzione 4

    Se durante l'installazione si riceve un messaggio come quello mostrato di seguito, è probabile che sia necessario eliminare uno dei file tablename.ibd, che non è stato eliminato correttamente durante il processo di rimozione delle tabelle del database.

    Lo spazio tabellare per la tabella xxx esiste. Scartate il tablespace prima di IMPORT
    Per un elenco completo di tutte le possibili soluzioni a questo problema, consultate questo articolo di stack-overflow.

    Errore di creazione del database

    Quando si tenta di utilizzare l'azione Crea database, viene visualizzato un messaggio del tipo "Impossibile creare il database...".

    Soluzione

    "Impossibile creare un database..." in genere significa che il vostro host non supporta la creazione di database attraverso il codice PHP. In questo caso è necessario creare un database attraverso gli strumenti forniti dall'host.

    Sulla maggior parte degli host è possibile farlo attraverso il cpanel. Contattare il proprio host per ricevere istruzioni su come creare un nuovo database. Gli utenti di Duplicator Pro dovrebbero essere in grado di utilizzare la scheda di connessione cPanel per accedere ai propri account cPanel e creare il database attraverso l'interfaccia del programma di installazione di cPanel. In alternativa, è possibile utilizzare le modalità Importazione o Sovrascrittura.

    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 - Abilitare il controllo legacy

    Nel programma di installazione, al punto 2, sotto le opzioni, è presente un'impostazione intitolata "Legacy" ed etichettata "Applica il supporto di fall-back della collazione legacy per i tipi di collazione sconosciuti". Selezionare questa casella di controllo per applicare una collazione legacy di ripiego e continuare l'installazione.

    Quando si crea una tabella di database, la versione di MySQL utilizzata potrebbe non supportare il tipo di collazione della versione di MySQL in cui è stata creata la tabella. In questo caso, il programma di installazione tornerà a un tipo di collation legacy per cercare di creare la tabella. Questo valore deve essere controllato solo se si riceve un errore durante l'installazione del database.

    Ad esempio, se il backup è stato creato su MySQL 5.7 con un tipo di collation della tabella 'utf8mb4_unicode_520_ci' e si esegue il programma di installazione su un motore MySQL 5.5 più vecchio che non supporta tale tipo, verrà lanciato un errore. Se questa opzione è selezionata, l'impostazione legacy proverà a usare 'utf8mb4_unicode_520', poi 'utf8mb4', poi 'utf8' e così via fino a esaurire le opzioni. Anche se questa opzione funziona con la maggior parte delle configurazioni, l'opzione 1 di cui sopra è ancora quella raccomandata e più sicura.

    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:

    1. Estrarre manualmente il file zip dell'archivio.
    2. 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:

    • phpMyAdmin
    • Dichiarazioni SQL
    • Banco di lavoro MySQL

    Vedi anche:
    Fornitori di hosting consigliati per Duplicator?
    http://dev.mysql.com/downloads/mysql
    https://make.wordpress.org/core/2015/04/02/the-utf8mb4-upgrade

    Questo articolo è stato utile?

    Articoli correlati