7

最近、GEOMETRY タイプの列を持つ MySQL テーブルを作成しました。

mysqldump を使用してテーブルをバックアップすると、\0 などのエスケープ文字と、上位 ASCII 範囲の生のバイナリ バイトのように見える文字を含む、引用符で囲まれた文字列としてジオメトリ カラムが出力されます。

ダンプを別のデータベースに復元しようとすると、次のエラーで失敗します。

「Geometry フィールドに送信したデータから GEOMETRY オブジェクトを取得できません」。

--hex-blob をコマンド ラインに追加しようとしましたが、これによって出力が変更されたり、問題が修正されたりすることはありません。

誰かが MySQL でデータ型を作成したのではなく、それをバックアップする方法を含めるのを忘れているに違いありません。私は何が欠けていますか?

ありがとう。

4

4 に答える 4

4

私の場合、このエラーは特に、 null 以外のジオメトリ カラムののジオメトリ値で発生しました。

私の場合、空のジオメトリは未知のジオメトリの正当なケースだったので、null 値を許可するように列を変更してから実行することでこれに対処しました。UPDATE ... SET geom = NULL WHERE IsEmpty(geom);

この後、結果の sql を別のデータベースに再実行mysqldumpして正常にインポートすることができました。

(正直に言うと、空のジオメトリ値が最初にどのように取得されたのかわかりません - 空のジオメトリ値を作成する構文さえ知りません)

于 2016-01-08T09:45:09.693 に答える