web-dev-qa-db-ja.com

MySQL Workbenchは結果をBLOBとして表示します

MySQL Workbenchがクエリ結果をBLOBとして表示することを発見し続けています。例:SELECT INET_NTOA(167773449)-> BLOB

「値の表示」を選択した場合、テキスト値は「10.0.5.9」であると判断できますが、複数の行を選択して内容を確認したい場合はかなりイライラします。

これを回避する方法はありますか、それともツールの制限ですか?

27
Mr. Boy

Background:この問題は、バイナリ文字列値(BINARY/VARBINARYタイプ)が結果に返されるときに発生します。バイナリ文字列にはゼロバイトが含まれており、何らかの理由で、明らかにセキュリティがデフォルトで表示されていません。バイナリ文字列の詳細 here

報告された例SELECT INET_NTOA(167773449)でも、関数はバイナリ文字列を返します。 this を参照してください。

解決策:MySQL Workbench v5.2.22以降、このような値を表示または非表示にするかどうかを設定で設定できます。

  1. MySQL Workbenchで、 "Edit-> Preferences ...->SQL Queries"に移動します。 OR "Edit-> Preferences ...-> SQL Editor->SQL Execution "(使用しているWorkbenchのバージョンによって異なります)。
  2. オプション「バイナリ/ VARBINARYを非バイナリ文字列として処理」をチェックして、実際の値を表示します。

参考:元の問題が報告され、修正 here で回答されました。

55
Tariq

できることは、BLOB型を文字列にキャストすることです。これにより、selectステートメントを参照するときに、BLOB型の内容を簡単に確認できます。

SELECT CAST('blob_column' AS CHAR(10000) CHARACTER SET utf8) FROM 'DB_table';
10