MySQL添加非空字段时SQL语法报错,如何修复?
修复MySQL ALTER TABLE语句的语法错误
问题根源
- 中文单引号解析失败:你用了中文符号
‘’包裹默认值-,MySQL仅支持英文单引号',这会触发语法解析错误。 - 第二条语句的语法逻辑冲突:
- 你需求是字段不允许为空,但语句中同时写了
DEFAULT '-'和NULL,逻辑矛盾; - MySQL语法要求字段的可空属性(
NULL/NOT NULL)必须放在DEFAULT关键字之前,你的顺序不符合规范。
- 你需求是字段不允许为空,但语句中同时写了
修正后的SQL语句
第一步:添加非空字段(修正引号)
ALTER TABLE quizzes.docs ADD doc_code varchar(10) NOT NULL DEFAULT '-';
第二步:调整字段位置(保持非空属性)
如果只是需要将doc_code移动到employee_id之后,推荐用MODIFY(无需重复字段名,更简洁):
ALTER TABLE quizzes.docs MODIFY doc_code varchar(10) NOT NULL DEFAULT '-' AFTER employee_id;
如果坚持用CHANGE,写法如下:
ALTER TABLE quizzes.docs CHANGE doc_code doc_code varchar(10) NOT NULL DEFAULT '-' AFTER employee_id;
关键说明
- 全程使用英文单引号
'包裹字符串值; - 严格遵循
NOT NULL在前、DEFAULT在后的语法顺序; - 移除矛盾的
NULL关键字,确保字段符合“不允许为空”的需求。
内容的提问来源于stack exchange,提问作者Petro Gromovo
相关产品推荐
相关产品推荐

