我经常发现MySQL Workbench将查询结果显示为BLOB。例如:SELECT INET_NTOA(167773449)
--> BLOB
如果我选择“查看值”,我可以确定文本值为“10.0.5.9”,但当我选择多行并希望浏览内容时,这样做相当烦人。
是否有解决方法或者这是该工具的限制?
我经常发现MySQL Workbench将查询结果显示为BLOB。例如:SELECT INET_NTOA(167773449)
--> BLOB
如果我选择“查看值”,我可以确定文本值为“10.0.5.9”,但当我选择多行并希望浏览内容时,这样做相当烦人。
是否有解决方法或者这是该工具的限制?
背景: 当二进制字符串值(BINARY/VARBINARY类型)在结果中返回时,就会出现此问题。这些二进制字符串包含零字节,并且由于某种原因,显然是出于安全考虑,默认情况下没有显示。有关二进制字符串的更多详细信息,请参见此处。
即使在所报告的示例SELECT INET_NTOA(167773449)
中,该函数也返回二进制字符串。请参见此处了解详情。
解决方案: 自MySQL Workbench v5.2.22起,可以通过首选项设置是否显示或隐藏此类值。
参考: 有关原始问题已在此处报告并回答修复:此处。
您可以将BLOB类型转换为字符串。这将使您在浏览选择语句时简单地查看BLOB类型中的内容。
SELECT CAST(`blob_column_name` AS CHAR(10000) CHARACTER SET utf8) FROM `table_name`;
SELECT CONVERT(FROM_BASE64(myMEDIUMTEXTcol) using utf8) notAblobject FROM myTable;
我的表包含一个MEDIUMTEXT列,用于存储Base64字符串。在我的前端JS代码中,我一直收到一个对象而不是一个字符串。该对象似乎包含ASCII值的数组。
在phpMyAdmin中测试相关查询表明结果是一个BLOB。我更新了SQL查询,如上所述,以便返回一个简单的字符串而不是一个对象。