MySQL递归CTE查询报错:如何移除默认Schema或临时禁用?
解决MySQL Workbench递归CTE自动追加Schema前缀报错问题
核心原因与首要修复
你的递归CTE查询缺少MySQL要求的RECURSIVE关键字——MySQL 8.0及以上版本中,递归CTE必须显式声明WITH RECURSIVE,否则数据库会将CTE的自引用误判为普通表查询,进而触发Workbench自动追加默认Schema前缀的错误行为。
修正后的查询代码
WITH RECURSIVE countUp AS ( SELECT 1 as N UNION ALL SELECT N + 1 FROM countUp WHERE N < 3 ) SELECT * FROM countUp;
额外解决方法(针对Workbench自动前缀行为)
如果确认查询语法无误仍出现该问题,可通过以下方式禁用Workbench的自动Schema追加:
- 打开Workbench的编辑 > 首选项 > SQL编辑器
- 在"SQL执行"或"标识符处理"相关选项中,找到类似"自动追加Schema名称"的设置并取消勾选
- 重启Workbench后重新执行查询
另外,也可以在执行查询前,先通过USE my_test_database;语句显式切换到目标数据库,确保上下文正确,避免Workbench自动补全错误的前缀。
内容的提问来源于stack exchange,提问作者Daniel Possamai
相关产品推荐
相关产品推荐

