为什么导入的MySQL转储显示一些列值为BLOB?

时间:2015-08-16 06:08:40

标签: mysql phpmyadmin

我从我的服务器向我的本地系统导入了一个MySQL表转储。我正在使用phpMyAdmin来查看我的本地MySQL数据库。持有电子邮件的列显示为BLOB - 而不是实际的电子邮件。

当我按下"编辑"它显示正确的电子邮件,但不会列出。

我完全感到困惑,为什么会发生这种情况。有人可以建议解决方案吗?

1 个答案:

答案 0 :(得分:1)

BLOB数据类型用于存储任意二进制数据(Binary Large OBject = BLOB),例如图像或其他文档。按原样显示值是没有意义的。它看起来与在文本编辑器中查看图像相同。

您有多种选择,具体取决于您使用的phpMyAdmin版本 - 我很遗憾不知道。

  • 默认情况下,让phpMyAdmin显示BLOB值。
  • 显示完整结果集的BLOB值。

an already asked question涵盖了这两种可能性。

但基本上,这只是对抗症状而不是治愈疾病。问题是:为什么选择电子邮件字段为BLOB?基本上,VARCHAR就足够了。我不知道你运行的MySQL版本,但是从MySQL 5.0.3开始,VARCHAR可以是as large as 65k byte

ALTER TABLE
  `table`
CHANGE
  `email` `email` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

上面的查询将字段email更改为VARCHAR(255)。注意你喜欢使用的长度,以及字符集和整理。但在这种情况下,UTF-8应该非常好。