MySQL创建含空格列名的数据表时触发1064语法错误问题咨询
MySQL创建带空格列名触发1064语法错误的解决方案
错误根源
之前尝试的两种包裹写法都不符合MySQL的原生语法规则:
- 用方括号
[school name]包裹列名是SQL Server、Access等数据库的语法,MySQL解析器无法识别,这也是你看到报错直接指向[school name] VARCHAR(20)位置的核心原因 - 用双引号
"school name"包裹列名时,默认配置下MySQL会把双引号识别为字符串值的定界符,除非手动开启ANSI_QUOTESSQL模式,否则必然触发语法报错
可直接运行的正确写法
MySQL默认用来包裹特殊格式标识符(带空格、特殊符号、关键字命名的列/表)的定界符是反引号(`),对应修正后的建表语句为:
create table table_dump( name varchar(20), address varchar(20), `school name` varchar(20) );
实用提示
- 非必要不建议用带空格的列名,换成下划线风格的命名(比如
school_name)能大幅降低后续SQL编写、迁移时的语法兼容成本 - 如果强行要使用双引号作为标识符定界符,需要修改MySQL全局配置开启
ANSI_QUOTES模式,但这种写法不具备跨环境兼容性,不推荐生产场景使用
内容的提问来源于stack exchange,提问作者user 98
相关产品推荐
相关产品推荐

