MariaDB添加数字格式命名列时出现SQL语法错误如何解决?
问题解决方法
语法报错核心原因
- MariaDB 中列名、表名这类标识符如果是纯数字组合、和SQL关键字重名、或包含特殊字符,不能直接书写,也不能用普通单/双引号包裹(普通引号仅用于标识字符串值),必须使用反引号(`,键盘ESC下方与~同键的符号)包裹才会被识别为合法标识符。
- 你之前给test列加普通引号也执行失败,就是因为普通引号不属于标识符的合法包裹符号。
正确写法示例
使用反引号包裹数字列名即可正常执行:
ALTER TABLE dates ADD COLUMN IF NOT EXISTS (`20201205` VARCHAR(255));
可选配置说明
如果希望用双引号包裹标识符也能生效,可以开启ANSI_QUOTES SQL模式:
-- 临时生效(当前会话连接有效,断开后重置) SET sql_mode = 'ANSI_QUOTES'; -- 开启后即可用双引号包裹标识符 ALTER TABLE dates ADD COLUMN IF NOT EXISTS ("20201205" VARCHAR(255));
如果需要永久生效,需要修改MariaDB配置文件中的sql_mode配置项,添加ANSI_QUOTES参数后重启服务即可。
内容的提问来源于stack exchange,提问作者The Coding Penguin
相关产品推荐
相关产品推荐

