非常に大きなMySQLデータベース(1.6GB - 主にBLOB)をエクスポートして新しいサーバにインポートしようとしています。私はほとんどの問題を解決し、最終的に間違いなくインポートを完了しました。 MySQL Query Browserの使用私はテーブルのクエリをBLOBのイメージで実行し、ディスクに保存しました(クエリブラウザの保存アイコンを使用して)。ファイルを開こうとしたときに、「無効なイメージ形式」エラーが発生しました。ええとああ。DBデータと異なるBLOBデータをエクスポートしました
クエリブラウザを使用して、ソースデータベースと最近インポートされた新しいデータベースの値を調べました。値は異なっていると私は思う。それは単に問題や何かをエンコードすることができます。ここで私が見たものである。
ソース(有効なデータ)サーバー:
FF D8 FF E0 00 10 4A 46 49 46 00 01 01 01 00 60
00 60 00 00 FF DB 00 43 00 08 06 06 07 06 05 08
and so on...
新サーバー:余分の3つのバイトがあること、それが私の初心者の目に表示されます。この例では
C3 BF C3 98 C3 BF C3 A0 00 10 4A 46 49 46 00 01
01 01 00 60 00 60 00 00 C3 BF C3 9B 00 43 00 08
and so on...
「新しい」サーバー上のデータの前にあるデータ。
次に、010 editorを使用してSQLダンプファイルをチェックアウトしました。私はこの特定の例の行を見つけました。ここに私が見るものがあります:
FF D8 FF E0 5C 30 10 4A 46 49 46 5C 30 01 01 01
5C 30 60 5C 30 60 5C 30 5C 30 FF DB 5C 30 43 5C
30 08 06 06 07 06 05 08 and so on...
私は私の頭の上です。私はパターンを参照して、私はヘックスペア5C 30が00と同じように見えることに気づきますが、なぜ私は理解できません。この時点で、私は拭き取られようとしているソースサーバを持っていて、恐れている新しいサーバが破損しています。私はこれがMySQLでグローバル変数を設定することで解決できる何らかのエンコードの問題だと思っていますが、私は本当に分かりません。
ソース(稼動中の)サーバーと新しい(破損した)サーバーからファイルを保存すると、破損したファイルのファイルサイズは約40%大きくなります。
私は両方のサーバー上の文字セット変数を確認:
SHOW VARIABLES LIKE '%char%'
ソースサーバ:
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
新しいサーバー:
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
を彼らは同じです。
FYI 1.6 Gbがデータベース用語でちょうど赤ちゃんです! – briantyler
16進数の文字列 '5C 30'は' \ 0'なので、エディタで何か変わった振る舞いをしたり、SQLダンプの内容が何とか操作/壊れてしまったりします。 – cmbuckley