Wenn Sie Korruption in der ursprünglichen Datenbank vermuten, können Sie wie folgt vorgehen:
Für MyISAM-Tabellen:
CHECK TABLE <table_name>;
REPAIR TABLE <table_name>;
Für InnoDB-Tabellen:
http://www.mysqlperformanceblog.com/2008/07/04/recovering-innodb-table-corruption/
I‘ In einigen wenigen Fällen, die von CHECK und REPAIR erkannt und korrigiert werden konnten, sah ich persönlich Korruption mit MyISAM-Tabellen. Ich habe noch nie Korruption mit InnoDB-Tabellen erlebt und kann daher nicht aus eigener Erfahrung über die im Link angegebenen Informationen sprechen.
Das gesagt, wenn ich in Ihren Schuhen wäre, würde ich beginnen, indem ich mir die von mysqldump erzeugte Ausgabedatei genauer ansehe, um zu sehen, ob ich die Quelle des Fehlers lokalisieren könnte. mysqldump gibt normalerweise eine einzelne INSERT-Anweisung pro Tabelle mit allen Daten in einer einzigen Zeile aus, daher ist es ein wenig schwierig, Fehler zu diagnostizieren, weil die in der Fehlermeldung enthaltene Zeilennummer nicht viel hilft. Also, was ich tun würde, ist die mysqldump-Ausgabedatei zu bearbeiten und neue Zeilen zwischen jeder Zeile einzufügen. Zum Beispiel:
Original:
INSERT INTO table VALUES (a,b,c),(d,e,f),(g,h,i), ...
ändern:
INSERT INTO table VALUES (a,b,c),
(d,e,f),
(g,h,i),
...
Da Sie mit der Kommandozeile vertraut sind, könnten Sie wahrscheinlich automatisieren dies mit sed etc.
Versuchen Sie dann, die geänderte Datei zu importieren. Sie sollten den gleichen Fehler erhalten, aber dieses Mal hilft die Zeilennummer, die genaue Zeile zu lokalisieren, die das Problem verursacht. An diesem Punkt sollten Sie in der Lage sein, das Problem zu diagnostizieren (oder den fehlerhaften Teil der mysqldump-Ausgabe hier zu veröffentlichen, und wir werden versuchen, zu helfen).
EDIT:
wird die Fehlermeldung Ihnen geschieht zitiert, wenn Sie Import die Datenbank? Oder wird die Datenbank erfolgreich importiert, aber die Anwendung erzeugt die Fehlermeldung beim Zugriff auf die Datenbank? Ich nahm das erstere an, aber jetzt denke ich, dass es letzteres sein könnte, nachdem du deine Frage erneut gelesen hast.
Eine weitere Idee: Enthält Ihre Datenbank gespeicherte Procs? Wenn dies der Fall ist, wird mysqldump diese standardmäßig nicht einschließen. Sie müssen die --routines Option verwenden:
mysqldump --routines -u <user> -p<password> <database> > output
Es ist nicht die Tabelle user_register, es ist die Daten, die Sie versuchen, einzufügen, scheint, dass Sie serialisieren, und versuchen Sie, diese –
Wie erzeugen Sie die Sicherung? Verwenden Sie beispielsweise mysqldump, MySQL Administrator usw.? Versuchen Sie es mit mysqldump und sehen Sie, ob Sie den gleichen Fehler bekommen. – cbranch
@Haim: Wie kann ich den Fehler loswerden? – qliq