我正在将此表创建到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条错误消息:
名称“role”是保留关键字。您必须使用其他名称 名称“name”是保留关键字。您必须使用其他名称 使用数据库默认存储引擎(“InnoDB”)。
所以这意味着使用MySql我不能使用字段名角色和名称,因为MySql是否保留了关键字?
问题是另一个人给我具体的创建这些表(包括字段的名称),因为我认为应用程序需要这个字段名称。
所以你确认我不能用这两个名字创建字段吗?
答案 0 :(得分:0)
问题中的错误消息似乎不是来自MySQL,因为在MySQL中,有关在sql语句中非法使用关键字的错误消息会说:
错误1064(42000):您的SQL语法错误接近'角色...'
更不用说在问题中,name
和role
字段名称都用反引号(`)括起来。如果用反引号括起来,即使是保留字也可以用作对象标识符。
正如@St在评论中指出:代码在rextester
中运行因此,我查看了Database Workbench 5
文档,并在introducing the various editors部分中说明了:
对象编辑器还将检查保留关键字和SQL 92/99标准关键字,并且在将create语句发送到服务器之前,它将根据您的数据库引擎功能发出警告或错误。
结论:您的GUI检查sql语句中的保留字并阻止sql执行。如果您尝试通过其他GUI或CLI执行它,则不会出现任何错误。
如果可以禁用此设置或将其降级为警告,则可能需要查看Database Workbench 5
文档。