MySQL数据库名含连字符致SQL语法错误的解决求助
解决MySQL含连字符数据库名的SQL语法错误问题
- 核心解决方案:用**反引号(`)**包裹包含连字符的数据库名称,这是MySQL识别特殊字符标识符的标准方式。
- 修正后的基础查询语句:
SELECT * FROM `system_prod2024-25`.course_role;
为什么你之前的尝试无效?
[]:这是SQL Server的标识符引用语法,MySQL不支持。":MySQL默认关闭ANSI_QUOTESSQL模式,此时双引号会被当作字符串引用而非标识符;仅开启该模式后才能用双引号包裹标识符,但反引号是通用兼容的写法。':单引号仅用于包裹字符串值,不能用来引用数据库、表这类标识符,会被MySQL解析为字符串,直接触发语法错误。
复杂查询的注意事项
如果实际查询涉及多个含特殊字符的标识符(比如带连字符的表名、列名),同样需要用反引号分别包裹每个标识符,示例:
SELECT `user-id`, `role-name` FROM `system_prod2024-25`.`course_role` WHERE `create-time` > '2024-01-01';
内容的提问来源于stack exchange,提问作者Tommy
相关产品推荐
相关产品推荐

