1

いくつかの基本的なオプションを使用して、mysqldump を使用して、あるサーバーから別のサーバーにいくつかの phpBB フォーラムのバックアップ レプリケーションを行っています。

mysqldump -h[server] --create-options --add-drop-database -R -E -B [database]

実行時に次のようなエラーが発生しました。

ERROR 1062 (23000) at line 9322: Duplicate entry '?????' for key 'wrd_txt'

投稿されたすべての単語が登録され、カウントされるテーブルの UNIQUE キーである phpBB フォーラムでは。問題はこれのようです:

mysqldump が DOUBLE 値をダンプするとき、いくつかの近い値を区別するのに不十分な精度を使用します (おそらく、元のデータベースから正確な値を再作成するには精度が不十分です)。DOUBLE 値が主キーまたは一意のインデックスの一部である場合、この出力からデータベースを復元すると、重複キー エラーで失敗します。

これは、フォーラムでの cirilic alphabet に関するいくつかの投稿が原因で発生しました。mysqldump は、cirilic 文字を単純な値として取り、それらを切り捨てているように見えるため、cirilic アルファベット (この場合は ? として表される文字) を使用すると、すべての文字が同じように見えます。その結果、UNIQUE キー列で同じサイズの文字列の値が繰り返されます。

他のオプションまたは他のツールを使用して、倍精度を使用してダンプを実行する方法はありますか?? または、ダンプ時にこの問題を回避する方法??

念のために言っておきますが、テーブルにあるそのシリア語の単語はスパムのために存在しただけで、私たちはラテン文字にしか興味がなかったので、このコマンドを使用してそれらを乗り切りました (おそらく誰にとっても役立つでしょう)。

delete from [table] where NOT HEX([column]) REGEXP '^([0-C][0-9A-F])*$';

よろしくお願いします!

4

0 に答える 0