我正在将这个表创建到 MySql 数据库中:
CREATE TABLE actors (
id BigInt UNSIGNED NOT NULL AUTO_INCREMENT,
sample_id VarChar(128) NOT NULL,
`role` Char(2) NOT NULL,
wiews VarChar(16),
pid VarChar(16),
`name` VarChar(128),
address VarChar(128),
country Char(3),
PRIMARY KEY (
id
)
) ;
ALTER TABLE actors COMMENT = '';
当我执行上述DDL语句时,我收到以下2条错误消息:
名称"角色"是一个保留关键字。您必须使用其他名称。名称
"名称"是一个保留关键字。您必须使用其他名称。
使用数据库默认存储引擎("InnoDB")。
所以这意味着使用 MySql我不能使用字段名称角色和名称,因为关键字是保留给 MySql 的吗?
问题是另一个人给了我创建这些表的具体信息(包括字段名称),因为我认为应用程序需要这个字段名称。
那么,您是否确认我无法使用这两个名称创建字段?
问题中的错误消息似乎不是来自MySQL,因为在MySQL中,有关在sql语句中非法使用关键字的错误消息会说:
错误 1064 (42000):您的 SQL 语法在"角色..."附近出现错误
更不用说在问题中name
和role
字段名称都用反引号 (') 括起来。如果保留字被反引号括起来,甚至可以将其用作对象标识符。
正如@St在评论中指出的那样:代码在 rextester 中运行
因此,我查看了Database Workbench 5
文档,并在介绍各种编辑器的部分中说:
对象编辑器还将检查保留关键字和 SQL 92/99 标准关键字,并且根据您的数据库引擎功能,它将在将 create 语句发送到服务器之前发出警告或错误。
结论:您的 GUI 会检查 sql 语句中的保留字,并阻止 sql 执行。如果您尝试通过另一个 GUI 或 CLI 执行它,则不会有任何错误。
如果可以禁用此设置或将其降级为警告,您可能需要查看Database Workbench 5
文档。