MySQL重命名列执行ALTER TABLE语句时抛出1064语法错误如何解决
问题原因
主要由两个问题共同导致:
- 语法冗余错误:
RENAME COLUMN语法仅用于纯重命名列名,不需要额外追加列的数据类型,你语句末尾的date属于多余参数。 - 版本兼容问题:
RENAME COLUMN是MySQL 8.0版本才新增的语法,如果你使用的是5.7及更旧的MySQL版本,本身就不支持该语法,直接执行也会抛出1064语法错误。
解决方案
情况1:使用MySQL 8.0及以上版本
去掉多余的date参数即可,正确语句如下:
ALTER TABLE customer RENAME COLUMN dob TO birthdate;
情况2:需要兼容MySQL 5.7及更低版本
使用兼容性更好的CHANGE语法实现重命名,注意CHANGE语法需要同时指定旧列名、新列名、列的完整数据类型(要和原列的类型、约束保持一致,避免数据异常),示例如下:
ALTER TABLE customer CHANGE COLUMN dob birthdate date;
注意:使用
CHANGE语法时,需要完整声明列的所有原有属性,包括NOT NULL、默认值、注释等,否则执行后这些属性会被清除。
内容的提问来源于stack exchange,提问作者mhasan
相关产品推荐
相关产品推荐

