通过mysql-shell执行INSERT语句报1064 SQL语法错误问题咨询
错误原因
key属于MySQL的内置保留关键字,SQL解析过程中会优先将其识别为语法关键字而非自定义字段名,直接作为字段名使用会触发1064语法错误。
解决方案
方案1:临时兼容(无需修改表结构)
给作为字段名使用的保留字加上反引号(`)包裹,明确告知解析器该内容为自定义字段名,修改后的INSERT语句如下:
INSERT INTO course_metadata_organization (partner, `key`, name) VALUES ('1', 'test', 'Norway');
建议所有字段统一加反引号,可提前规避其他潜在的保留字冲突问题。
方案2:永久修复(修改表结构)
将表中使用保留字的字段重命名为非保留字名称,比如改为course_key、business_key等,修改表结构参考SQL:
ALTER TABLE course_metadata_organization CHANGE COLUMN `key` `course_key` VARCHAR(255) [原有字段的其他属性,如NOT NULL、DEFAULT等];
修改后对应的INSERT语句可直接写普通字段名,不需要额外加反引号:
INSERT INTO course_metadata_organization (partner, course_key, name) VALUES ('1', 'test', 'Norway');
内容的提问来源于stack exchange,提问作者Kiran
相关产品推荐
相关产品推荐

