MySQL [erledigt] Datenbankproblem nach Mysql-Upgrade

joschilein

Multitalent
ID: 9301
L
5 Mai 2006
1.393
151
Ich habe mal wieder mein lokales xampp verjüngt, so wie ich es schon ein paar Mal gemacht habe. Jetzt habe ich aber bei einer großen Datenbank (lokale Mediawiki-Installation) ein Problem.

Auf Dateiebene in mysql/data/ sind die Dateien extrem klein. Gerade mal 16,9 MB. Irgendwas stimmt da nicht. Bis auf eine MYD-MYI-Kombination (11,6 und 5,2 MB) sind sämtliche anderen Dateien nur wenige KB groß. Dennoch sind im "alten" System alle Datenbankinhalte enthalten und funktionsfähig. Phpmyadmin zeigt in der Tabellenübersicht 65,2 MiB. Die fertige unkomprimierte sql-Exportdatei ist 53,7 MB groß.

Lese ich diese aber ins neue System ein, komme ich nicht weiter, da ich trotz timeout-Unterdrückung immer den mysql is gone away Fehler bekomme. Immer an der selben Stelle. Auch mal in komprimierter Variante. Nach meiner bisherigen Recherche ist dann wohl dieser Datensatz einfach zu groß (scheint wirklich der erste lange zu sein, es kommt aber noch mehr dieser Art).

Nur wie komme ich nun weiter? Warum kann ich plötzlich nicht mehr einfach im Dateisystem kopieren? Alle anderen Datenbanken haben damit problemlos gewechselt.

Das hilft mir leider auch irgendwie nicht weiter :(
 
Zuletzt bearbeitet:
Ein paar MB sind wohl nicht "zu groß". Ich hab schon zweistellig-Gigabyte-Dateien mit mysqldump+mysql exportiert und wieder importiert. Das reine Kopieren der *.myi;*.myd;*.frm-Dateien würd ich allerdings nicht empfehlen.

Hast du deine Daten mit InnoDB-Engine in der DB? Dann gibts keine Dateien obigen Typs, weil die dann wo anders in anderer Form sind.

Wegen "MySQL is gone"... :hö: ... spricht das Error-Log von MySQL was? Kann ja nicht sein, dass die sich einfach verabschiedet :-?
 
Lese ich diese aber ins neue System ein, komme ich nicht weiter, da ich trotz timeout-Unterdrückung immer den mysql is gone away Fehler bekomme.

MySQL Gone kommt auch, wenn das Paket, welches du an MySQL schickst die aktuelle maximale Paketgröße überschreitet, setze mal max_allowed_packet nach oben.

Schonmal das Backup per Commandline eingespielt? Ist deutlich effektiver für große Dateien als dies mit PHPMyAdmin zu machen.
 
Ein paar MB sind wohl nicht "zu groß". Ich hab schon zweistellig-Gigabyte-Dateien mit mysqldump+mysql exportiert und wieder importiert.
Ich meinte ja auch nicht die Gesamtgröße der Datenbank sondern eine einzelne Datenzeile.

Das reine Kopieren der *.myi;*.myd;*.frm-Dateien würd ich allerdings nicht empfehlen.
Hatte ich bisher also immer Glück dass es funktioniert hatte? Aber nun habe ich ja auch eine schöne Alternative (s.u.)

MySQL Gone kommt auch, wenn das Paket, welches du an MySQL schickst die aktuelle maximale Paketgröße überschreitet, setze mal max_allowed_packet nach oben.
Ja, das kam zwischendurch auch immer mal wieder als Fehler. Wieder beim selben Datensatz.

Schonmal das Backup per Commandline eingespielt? Ist deutlich effektiver für große Dateien als dies mit PHPMyAdmin zu machen.
Bisher nie. Wüsste auch gar nicht genau wie ich das machen soll. Bei mir scheitert es dann schon mit dem Einloggen (habe für root ein pw gesetzt)

Auf ner Windows kiste ist auch Heidi dein fruend.
Sieht ganz brauchbar aus und werde ich wohl zukünftig zumindest für die Backups nutzen. Aber ich habe zwei Probleme festgestellt. a) wird die Anzeige bei max_allowed_packet nicht verändert trotz endloser Refreshs an verschiedenen Stellen (über phpmyadmin habe ich dann gesehen, dass die Änderungen trotzdem gesetzt werden :ugly: ) und b) sind auch hier beide Fehler (2013 bzw 1153) an der selben Stelle aufgetreten, obwohl ich sogar vorher noch mal sauber über das Programm die alte DB exportiert hatte. Aber beim ca. 5ten Versuch ist der Import dann komplett durchgelaufen.

Problem erledigt, wenn auch nicht verstanden.
 
Wüsste auch gar nicht genau wie ich das machen soll. Bei mir scheitert es dann schon mit dem Einloggen (habe für root ein pw gesetzt)
Export
Code:
mysqldump -h localhost -u root -p dbname > dump.sql
Import
Code:
mysql -h localhost -u root -p dbname < dump.sql
-h für Host (kann man im Fall von localhost weglassen)
-u für den Benutzernamen
-p damit du nach dem Passwort gefragt wirst
am Ende den Datenbanknamen eingeben

Wichtig für den Import: Die Datenbank dbname, die du angibst, muss existieren. Tut sie das nicht,
Code:
mysql -h localhost -u root -p
einloggen,
Code:
CREATE DATABASE dbname;
exit
und dann erst importieren (oder :rtfm:, obs n Switch gibt, dass er die DB automatisch anlegt - da hab ich noch nie nachgeguckt).
 
Die von MySQL mitgelieferten Tools solltest du insoweit bedienen können ;)