我如何在MySQL Workbench中直接查看Blobs
-
30-09-2019 - |
题
我正在使用MySQL Workbench CE 5.2.30 CE / REV 6790。执行以下语句时:
SELECT OLD_PASSWORD("test")
我只得到一个很好的 BLOB
图标,我需要左键单击以选择单元格,右键单击并选择“在查看器中的打开值”,然后选择“文本”选项卡。
与phpmyadmin一起使用,我直接获得了 OLD_PASSWORD
称呼。这只是一个示例,但是有没有办法直接在输出中看到此类结果?
解决方案
简而言之:
- 去 编辑 > 优先
- 选择 SQL编辑器
- 在下面 SQL执行, , 查看 将二进制/varbinary视为非二进制字符串
- 重新启动MySQL Workbench(不会提示或了解此要求)。
在MySQL Workbench 6.0+
- 去 编辑 > 优先
- 选择 SQL查询
- 在下面 查询结果, , 查看 将二进制/varbinary视为非二进制字符串
- 重新启动MySQL Workbench并不是强制性的(不会提示或了解此要求)。
在此设置中,您将能够在不获得斑点的情况下连接场。
我认为这适用于版本5.2.22及以后,是 这个mysql错误.
免责声明:我不知道此设置的缺点 - 也许当您选择时 BINARY
/VARBINARY
您会将其视为纯文本,可能会引起误导和/或可能会阻碍性能,如果它们足够大?
其他提示
执行三个步骤:
转到“ WorkBench首选项” - >选择“查询结果”下的“ SQL Editor”:检查“将二进制/varbinary视为非二进制字符串”
重新启动MySQL Workbench。
现在选择
SELECT SUBSTRING(BLOB<COLUMN_NAME>,1,2500) FROM <Table_name>;
我不确定这是否回答问题,但是如果您右键单击字段中的“ blob”图标(查看表格时),则可以选择“在编辑器中打开值”。其中一个标签使您可以查看斑点。这是在ver中。 5.2.34
铸造有效,但这是一种痛苦,因此我建议使用Spioter的方法,除非您使用了许多真正的BLOB数据。
SELECT CAST(OLD_PASSWORD("test") AS CHAR)
您也可以用作其他类型,甚至可以限制大小,但是大多数时候我只使用char:http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html#function_cast
恐怕似乎不可能,它被列为Workbench中的错误:http://bugs.mysql.com/bug.php?id=50692不过,这将非常有用!
工作台6.3
跟随高分答案,然后使用 UNCOMPRESS()
(简而言之:
1.转到编辑>首选项
2.选择SQL编辑器
3.在SQL执行下,检查待遇二进制/varbinary作为非二进制字符串
4.重新启动MySQL Workbench(不会提示或了解此要求)。)
然后
SELECT SUBSTRING(UNCOMPRESS(<COLUMN_NAME>),1,2500) FROM <Table_name>;
或者
SELECT CAST(UNCOMPRESS(<COLUMN_NAME>) AS CHAR) FROM <Table_name>;
如果你只是放 UNCOMPRESS(<COLUMN_NAME>)
您可以右键单击blob,然后单击“编辑器中的“打开值”。
我将其他一些帖子拼凑在一起,因为工作台的“偏好”修复程序对我不起作用。 (WB 6.3)
SELECT CAST(`column` AS CHAR(10000) CHARACTER SET utf8) FROM `table`;
您几乎可以做的事情
SELECT GROUP_CONCAT(CAST(name AS CHAR))
FROM product
WHERE id IN (12345,12346,12347)
如果您想按查询订购
SELECT GROUP_CONCAT(name ORDER BY name))
FROM product
WHERE id IN (12345,12346,12347)
正如它在此博客上所说的
注意:如果BLOB是任意字节的序列,这里的先前答案并不特别有用;例如,二进制(16)存储128位GUID或MD5校验和。
在这种情况下,当前没有编辑器的偏好 - 尽管我有 立即提交功能请求 - 请参阅该请求以提供更多详细的说明。
直到/除非实现该功能请求],解决方案是 HEX
查询中的功能: SELECT HEX(mybinarycolumn) FROM mytable
.
另一种方法是使用 phpmyadmin 而不是MySQL Workbench - 默认情况下显示了十六进制。
select CONVERT((column_name) USING utf8) FROM table;
就我而言,工作台不起作用。因此,我使用上述解决方案将BLOB数据显示为文本。
选择 *,convert(uncompress(列)使用“ utf8”)作为table_name的列