"Il server MySQL è andato via" quando si tenta di importare un file di dump di grandi dimensioni


11

Sto cercando di importare un file di dump MySQL.

Il file è stato creato su un server Linux, sto cercando di importare su Windows

Ho effettuato l'accesso alla riga di comando ed eseguito:

SOURCE c:/dump.sql

Ma questo sembra aver sollevato alcuni problemi di set di caratteri (in particolare con virgolette intelligenti e altre punteggiatura non standard).

Mi è stato suggerito di correre:

mysql -u username -d dbase < c:\dump.sql

Quando provo questo ottengo l'errore

ERROR 2006 (HY000) at line 149351: MySQL server has gone away

Un po 'di google ha suggerito che ciò avesse a che fare con l'opzione max_allowed_packet ma ho provato questo e non ha funzionato. Qualcuno ha idea di cosa potrebbe essere?

Se qualcuno ha un suggerimento sul problema del set di caratteri sarebbe utile.


Qualche feedback? [15 caratteri richiesti per commentare]
Mihai Limbăşan,

Risposte:


23

Il mio primo istinto dopo aver letto il messaggio di errore nel titolo della domanda è stato quello di suggerire di aumentare max_allowed_packet. Hai detto che hai provato "quel passaggio" e non ha funzionato. Puoi confermare di aver modificato correttamente il file di configurazione del server? Il tuo fraseggio fa sembrare che tu abbia tentato di usarlo come interruttore della riga di comando sulla riga di comando del client mysql.exe, il che non farebbe cambiare il comportamento del server.

Quindi, in breve, ciò che dovresti provare a fare è individuare e modificare il file my.cnf attualmente utilizzato dal tuo server. Nella [mysqld]sezione modifica le impostazioni max_allowed_packet in qualcosa del genere

[mysqld]
max_allowed_packet=32M

Non dimenticare di riavviare il server dopo aver modificato la configurazione.

Ho usato 32M (un valore ridicolmente grande) come esempio. Poiché la tua query sembra essere entusiasta, dovresti provare questo valore (o forse anche 64M se hai abbastanza RAM) per vedere se funziona.

Un'altra opzione è lasciare il server così com'è e modificare il comportamento del client utilizzato per generare il dump SQL. Indica di limitare le dimensioni delle singole query a meno di 1 MB, anche in questo caso.

Per ulteriori dettagli, vedere B.1.2.10. Pacchetto troppo grande nel manuale di MySQL.


1
Sì, stavo solo provando l'opzione della riga di comando. La ragione per cui pensavo che avesse un effetto era che dava un errore massimo al pacchetto consentito quando lo impostavo su qualcosa di più piccolo. Proverò il tuo suggerimento lunedì. Grazie
Jeremy French,

Prego, sono quasi certo che funzionerà. Sfortunatamente, come con molti (ok, quasi) altri software scritti negli ultimi 50 anni circa, i messaggi di errore di MySQL tendono a risucchiare ed essere fuorvianti se non si ha già familiarità con il modo in cui funziona la mente dello sviluppatore :).
Mihai Limbăşan,

Sono contento di sentirlo - buon divertimento.
Mihai Limbăşan,

Davvero fantastico. Ho avuto lo stesso problema, sono venuto qui per porre la domanda e bam! risolto. @Mihai - qualunque cosa tu venga pagato; non è abbastanza :)
Steven Evers,

Questa soluzione ci ha aiutato quando abbiamo riscontrato questo errore dopo aver spostato il nostro MySQL da localhost a un server remoto. Grazie mille!
Lea Cohen,

1

Su MySQL 5.7.24, era dovuto alla vecchia configurazione di MySQL 5.6

sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION. 

L'opzione di seguito è obbligatoria se la versione di SQL è la stessa 5.7.5 o successiva.

sql_mode=TRADITIONAL

Inoltre ci sono due parametri max_allowed_packet in /etc/my.cnf, l'altro è per mysqldump. Si prega di prendere nota dello stesso.

max_allowed_packet = <1G>

La mia installazione è su CentOS7.


0

Sei in grado di accedere all'istanza MySQL sul server Windows dalla scatola di Linux?

In tal caso, è possibile eseguire il comando sulla casella Linux, con l'opzione -h per connettersi al server sulla finestra di Windows?

mysql -u username -d dbase -h <windows host> < dump.sql

Questo potrebbe risolvere i problemi del tuo set di caratteri , poiché stai utilizzando il client Linux sulla scatola originale per eseguire l'importazione. (solo una supposizione)


0

Cosa dice il registro MySQL?

A volte questo errore viene segnalato sul client in caso di errore irreversibile sul server. Questo può essere un indicatore di corruzione su disco delle tabelle del database.


-1

Il tuo account aveva una password? Forse devi aggiungere l'opzione -p:

mysql -u username -p -d dbase < c:\dump.sql

Oh, probabilmente no, dal momento che sembra aver fallito un po 'nell'importazione.
Brent,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.