MySQL Workbench显示结果为BLOB。

35

我经常发现MySQL Workbench将查询结果显示为BLOB。例如:SELECT INET_NTOA(167773449) --> BLOB

如果我选择“查看值”,我可以确定文本值为“10.0.5.9”,但当我选择多行并希望浏览内容时,这样做相当烦人。

是否有解决方法或者这是该工具的限制?

3个回答

70

背景: 当二进制字符串值(BINARY/VARBINARY类型)在结果中返回时,就会出现此问题。这些二进制字符串包含零字节,并且由于某种原因,显然是出于安全考虑,默认情况下没有显示。有关二进制字符串的更多详细信息,请参见此处

即使在所报告的示例SELECT INET_NTOA(167773449)中,该函数也返回二进制字符串。请参见此处了解详情。

解决方案: 自MySQL Workbench v5.2.22起,可以通过首选项设置是否显示或隐藏此类值。

  1. 在MySQL Workbench中,转到:"Edit -> Preferences... -> SQL Queries""Edit -> Preferences... -> SQL Editor -> SQL Execution" (取决于您使用的Workbench版本)。
  2. 选择选项“将BINARY/VARBINARY视为非二进制字符字符串”以显示实际值。

参考: 有关原始问题已在此处报告并回答修复:此处


6
在Workbench 6.2中,此设置位于“编辑->首选项->SQL编辑器->SQL执行”下。 - Inigo Flores
8
在版本号为6.2左右,存在一个回归问题:这个功能不再可用。 - Jon Marnock

26

您可以将BLOB类型转换为字符串。这将使您在浏览选择语句时简单地查看BLOB类型中的内容。

SELECT CAST(`blob_column_name` AS CHAR(10000) CHARACTER SET utf8) FROM `table_name`;

2

另一个(稍微简短)的解决方案

SELECT CONVERT(FROM_BASE64(myMEDIUMTEXTcol) using utf8) notAblobject FROM myTable;

无关背景

我的表包含一个MEDIUMTEXT列,用于存储Base64字符串。在我的前端JS代码中,我一直收到一个对象而不是一个字符串。该对象似乎包含ASCII值的数组。

在phpMyAdmin中测试相关查询表明结果是一个BLOB。我更新了SQL查询,如上所述,以便返回一个简单的字符串而不是一个对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接