元のデータベースの破損が疑われる場合は、次の操作を実行できます。
MyISAMテーブルの場合:
CHECK TABLE <table_name>;
REPAIR TABLE <table_name>;
InnoDBテーブルの場合:
http://www.mysqlperformanceblog.com/2008/07/04/recovering-innodb-table-corruption/
CHECK and REPAIRが検出して修正できたまれなケースで、MyISAMテーブルの破損を個人的に見ました。私はInnoDBテーブルで破損を経験したことがないので、リンクで提供されている情報に関して個人的な経験から話すことはできません。
そうは言っても、私があなたの立場にある場合は、mysqldumpによって生成された出力ファイルを詳しく調べて、エラーの原因を特定できるかどうかを確認することから始めます。mysqldumpは通常、テーブルごとに1つのINSERTステートメントを出力し、すべてのデータを1行に表示します。エラーメッセージに含まれる行番号はあまり役に立たないため、エラーの診断は少し注意が必要です。したがって、私が行うことは、mysqldump出力ファイルを編集し、各行の間に改行を挿入することです。例えば:
オリジナル:
INSERT INTO table VALUES (a,b,c),(d,e,f),(g,h,i), ...
への変更:
INSERT INTO table VALUES (a,b,c),
(d,e,f),
(g,h,i),
...
コマンドラインに慣れているので、おそらくsedなどでこれを自動化できます。
次に、変更したファイルをインポートしてみます。同じエラーが発生するはずですが、今回は行番号が問題の原因となっている正確な行を特定するのに役立ちます。その時点で、問題を診断できるはずです(または、mysqldump出力の問題のある部分をここに投稿してください。サポートを試みます)。
編集:
引用したエラーメッセージは、データベースをインポートするときに発生しますか?または、データベースは正常にインポートされますが、アプリケーションはデータベースにアクセスするときにエラーメッセージを生成しますか?前者を想定していたのですが、質問を読み直して、後者かもしれないと思っています。
もう1つのアイデア:データベースにはストアドプロシージャが含まれていますか?その場合、mysqldumpにはデフォルトでそれらが含まれません。--routinesオプションを使用する必要があります。
mysqldump --routines -u <user> -p<password> <database> > output