あなたは、元のデータベース内の破損の疑いがある場合、あなたは次の操作を行うことができます:私は「
http://www.mysqlperformanceblog.com/2008/07/04/recovering-innodb-table-corruption/
:InnoDBテーブルの場合
CHECK TABLE <table_name>;
REPAIR TABLE <table_name>;
:MyISAMテーブルの場合
をCHECKとREPAIRが検出し修正することができた稀な機会にMyISAMテーブルで個人的に腐敗が見られました。私はInnoDBテーブルの破損を経験したことがないので、リンクで提供される情報に関して個人的な経験から話すことはできません。
私はあなたの靴の中にいたとしたら、mysqldumpが出力する出力ファイルを詳しく調べて、エラーの原因を突き止めることができるかどうかを確認します。 mysqldumpは通常、すべてのデータを1行にまとめたテーブルごとに1つのINSERT文を出力するので、エラーメッセージに含まれる行番号があまり役に立たないため、エラーを診断するのは少し難解です。ですから、私は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出力の問題箇所をここに投稿してください)。
EDIT:
はあなたインポートデータベースが起こって引用したエラーメッセージですか?または、データベースは正常にインポートされますが、アプリケーションはデータベースにアクセスするときにエラーメッセージを生成しますか?私は前者を仮定していましたが、あなたの質問を再読した後で後者かもしれないと思っています。
さらに1つのアイデア:データベースに保存されているprocsが含まれていますか?もしそうなら、mysqldumpはデフォルトでそれらを含みません。あなたは--routinesオプションを使用する必要があります。
mysqldump --routines -u <user> -p<password> <database> > output
テーブルuser_registerではなく、挿入しようとしているデータがシリアル化されているようですが、これを挿入してみてください –
どのようにバックアップを生成していますか?たとえば、mysqldump、MySQL Administratorなどを使用していますか? mysqldumpを使って同じエラーが発生するかどうかを調べてみてください。 – cbranch
@ Haim:どうすればエラーを取り除くことができますか? – qliq