Ich importiere einen MySQL-Dump und erhalte den folgenden Fehler.
$ mysql foo < foo.sql
ERROR 1153 (08S01) at line 96: Got a packet bigger than 'max_allowed_packet' bytes
Anscheinend gibt es Anhänge in der Datenbank, was zu sehr großen Einfügungen führt.
Dies ist auf meinem lokalen Computer, einem Mac mit MySQL 5, der aus dem MySQL-Paket installiert wurde.
Wo ändere ich mich max_allowed_packet
, um den Speicherauszug importieren zu können?
Gibt es noch etwas, das ich einstellen sollte?
Nur das Ausführen mysql --max_allowed_packet=32M …
führte zu demselben Fehler.
Antworten:
Sie müssen es wahrscheinlich sowohl für den Client (Sie führen den Import aus) als auch für den Daemon mysqld ändern, der den Import ausführt und akzeptiert.
Für den Client können Sie ihn in der Befehlszeile angeben:
Auch ändern die my.cnf oder my.ini unter dem Abschnitt mysqld und Satz:
Sie können diese Befehle auch in einer MySQL-Konsole ausführen , die mit demselben Server verbunden ist:
(Verwenden Sie einen sehr großen Wert für die Paketgröße.)
quelle
max_allowed_packet
, 100 MB einzustellen ?Wie Michaelpryor sagte, müssen Sie es sowohl für den Client als auch für den Daemon-MySQL-Server ändern.
Seine Lösung für die Client-Befehlszeile ist gut, aber die INI-Dateien reichen je nach Konfiguration nicht immer aus.
Öffnen Sie also ein Terminal, geben Sie mysql ein, um eine mysql-Eingabeaufforderung zu erhalten, und geben Sie die folgenden Befehle ein:
Lassen Sie die MySQL-Eingabeaufforderung geöffnet und führen Sie Ihre Befehlszeilen-SQL-Ausführung auf einem zweiten Terminal aus.
quelle
Dies kann in Ihrer
my.ini
Datei (unter Windows unter \ Programme \ MySQL \ MySQL Server) im Abschnitt Server geändert werden , zum Beispiel:quelle
Re my.cnf unter Mac OS X bei Verwendung von MySQL aus der dmg-Paketdistribution von mysql.com
Standardmäßig ist my.cnf nirgends zu finden.
Sie müssen eine der kopieren
/usr/local/mysql/support-files/my*.cnf
zu/etc/my.cnf
und neu startenmysqld
. (Was Sie im MySQL-Einstellungsbereich tun können, wenn Sie es installiert haben.)quelle
Versuchen Sie in etc / my.cnf, das max_allowed _packet und die net_buffer_length in zu ändern
Wenn dies nicht funktioniert, wechseln Sie zu
quelle
Das Update besteht darin, das max_allowed_packet des MySQL-Daemons zu erhöhen. Sie können dies für einen laufenden Daemon tun, indem Sie sich als Super anmelden und die folgenden Befehle ausführen.
Dann importieren Sie Ihren Dump:
quelle
Unter CENTOS 6 /etc/my.cnf lautet die korrekte Syntax im Abschnitt [mysqld]:
quelle
Verwenden Sie eine
max_allowed_packet
Variable, die einen Befehl wie ausgibtmysql --max_allowed_packet=32M -u root -p database < dump.sql
quelle
Etwas unabhängig von Ihrem Problem, daher hier eines für Google.
Wenn Sie die SQL nicht mysqldump haben, ist Ihre SQL möglicherweise defekt.
Ich habe diesen Fehler nur erhalten, weil ich versehentlich ein nicht geschlossenes String-Literal in meinem Code habe. Schlampige Finger passieren.
Das ist eine fantastische Fehlermeldung für einen außer Kontrolle geratenen String, danke für das MySQL!
quelle
max_allowed_packet
Fehler zurückgegeben. Wenn es für diejenigen in der Zukunft hilft, habe ich mit der Pandas-API eingefügtdf.to_sql(...)
Manchmal Typeinstellung:
in my.ini funktioniert nicht.
Versuchen Sie, die my.ini wie folgt zu bestimmen:
oder
Starten Sie dann den Server neu:
quelle
Es ist ein Sicherheitsrisiko, einen
max_allowed_packet
höheren Wert zu haben , da ein Angreifer größere Pakete pushen und das System zum Absturz bringen kann.Also, optimaler Wert
max_allowed_packet
abgestimmt und getestet werden.Es ist besser, bei Bedarf zu ändern (mit
set global max_allowed_packet = xxx
), als es als Teil von my.ini oder my.conf zu haben .quelle
Ich arbeite in einer gemeinsam genutzten Hosting-Umgebung und habe eine auf Drupal basierende Website gehostet. Ich kann die
my.ini
Datei oder diemy.conf
Datei auch nicht bearbeiten .Also habe ich alle Tabellen gelöscht, die sich darauf beziehen,
Cache
und daher konnte ich dieses Problem beheben. Trotzdem suche ich nach einer perfekten Lösung, um dieses Problem zu lösen.Bearbeiten - Das Löschen der Tabellen verursachte Probleme für mich, da Drupal erwartet hatte, dass diese Tabellen vorhanden sein sollten. Also habe ich den Inhalt dieser Tabellen geleert, wodurch das Problem gelöst wurde.
quelle
Error:
ABFRAGE:
Maximaler Wert:
quelle
Setzen Sie max_allowed_packet auf dasselbe (oder mehr) als das, was es war, als Sie es mit mysqldump ausgegeben haben. Wenn Sie das nicht können, erstellen Sie den Speicherauszug erneut mit einem kleineren Wert.
Angenommen, Sie haben es mit mysqldump abgeladen. Wenn Sie ein anderes Tool verwendet haben, sind Sie alleine.
quelle