如何在MySQL Workbench中向枚举类型添加更多元素?

4

如标题所示,我正在尝试向现有的ENUM类型列添加更多元素。 我正在使用MySQL Workbench 6.3进行数据库操作。

CREATE TABLE `quantum` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `type` enum('a','b','c','d','e') CHARACTER SET latin1 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=11173 DEFAULT CHARSET=utf8;

然后我尝试更改类型列以添加另一个元素f

ALTER TABLE quantum
MODIFY COLUMN type enum('a','b','c','d','e','f') NOT NULL

然后MySQL Workbench 6.3出现了一些奇怪的错误。

在这里输入图片描述


1
"type"是一个保留字,因此作为列名(顺便说一句,这是个坏主意)可能需要用反引号指定为`type`来转义它。 - Michael - sqlbot
你想使用GUI工具(如问题标题中所述)还是纯SQL代码(如问题正文中所述)? - Álvaro González
@Michael-sqlbot - 不是真的。它是一个关键字,但不是保留关键字。在MySQL/5.5.46中,上面的代码对我来说运行良好。事实上,现在我想知道OP是否真的尝试运行代码并得到了服务器错误,还是他只是在询问客户端解析器。 - Álvaro González
@ÁlvaroGonzález 谢谢你指出这个问题。猜错了。:( 我真的无法理解Oracle在客户端解析器方面在想什么 - 可能会发生什么问题? 我想知道在SO上看到的非MySQL错误消息是怎么回事。如果他们真的这样做,那就是一个悲惨的设计决策。作为DBA,旧的MySQL查询浏览器仍然是我的首选工具 - 轻巧,快速,不臃肿。展示给我对象并让我运行查询和脚本。如果服务器不喜欢它们,让服务器告诉我。否则,别挡路,没有这样的问题。 - Michael - sqlbot
@Michael-sqlbot 嗯...我喜欢语法高亮、代码检查和其他任何可以帮助我的工具。而且Workbench的逻辑应该相当不错,因为它基本上重用了服务器代码中的大部分组件。 - Álvaro González
语法高亮非常好。但是,指出虚假错误并显示对实际MySQL专家毫无意义的错误消息并不那么值得称赞。然而,Workbench长期以来一直试图做一些它不应该尝试做的“有用”的事情,做得很差,而且经常很慢。 - Michael - sqlbot
2个回答

2
在使用 Workbench/MySQL 中的 enum() 数据类型时,如果在 ENUM() 中没有值/参数,MySQL 将不接受该数据类型。
请使用带有逗号分隔值的 ENUM :
ENUM('PENDING','SUCCESS','FAIL')

enter image description here


2
你确定你有最新版本的MySQL Workbench吗?我在当前版本(6.3.6)中没有看到这个问题:

enter image description here


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