[MySQL]importする際の「Cannot get geometry ~」エラーに対処する

mysql_logo_large

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

[mysqldump]MySQL インポート時に発生する geometry のエラーに対応する

ある日、mysqldump でバックアップを取ったデータベースを別データベースにインポートしようとしたところ

ERROR 1416 (22003) at line 898: Cannot get geometry object from data you send to the GEOMETRY field

のエラーが発生しました。解決策の探す羽目になったため、備忘録として解決方法と原因を残します。

 

geometry エラーの解決方法

エラーの解決方法は、mysql のバックアップである mysqldump を実行するときに

–hex-blob

のオプションを付けることです。

実際に mysqldump を実行する際の実行例としては、

mysqldump -hlocalhost -p hoge –hex-blob > db_mysqldump.sql

といった記述になります。

〇MySQL 公式の「–hex-blob」の解説ページ
https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_hex-blob

 

geometry エラーの原因

MySQL をインポートするデータの中に BLOB 型や GEOMETRY 型がある場合、データの構成上、そのままではインポートできないデータが生成される場合があります。

そこでインポートできないデータが出来た場合の対処方法として、「–hex-blob」を付けることにより、該当のデータを「0x123456789ABCDEF」といった16進数のデータとして変換することによりエラーの発生を防止することができます。

 

 

ウェブプログラミングについては下記の本も参考になるので、スキルアップにお役立てください。

徳丸 浩(著)
ページ数: 688ページ
出版社:SBクリエイティブ
発売日:2018/06/21

出典:amazon