求助:在phpMyAdmin中创建CTE语句提示unrecognized statement type. (near WITH)
解决phpMyAdmin中CTE语句报错"unrecognized statement type. (near WITH)"的问题
这个问题的核心原因其实一目了然——你的MySQL版本不支持CTE(公共表表达式)语法!
为什么会报错?
MySQL是从8.0版本开始正式引入WITH关键字来实现CTE的,而你当前使用的是MySQL 5.0.12,这个版本比CTE的支持早了整整十几年,数据库本身根本不认识WITH开头的语句,所以才会抛出"unrecognized statement type"的错误。
这个问题和phpMyAdmin、PHP 7.2.0都没有关系:
- phpMyAdmin只是负责把你输入的SQL语句转发给MySQL执行,报错是MySQL返回的,不是工具本身的问题
- PHP版本只影响后端代码和数据库的交互逻辑,不影响数据库本身对SQL语法的支持
解决办法
你有两个可选方向:
- 升级MySQL版本(推荐):把MySQL升级到8.0及以上的稳定版本,之后就能正常使用
WITH开头的CTE语句了,这是一劳永逸的方案。 - 改写SQL语句:如果暂时没法升级数据库,就把CTE逻辑改写成MySQL 5.0支持的子查询或者临时表形式。举个简单例子:
原CTE语句:
改写成子查询:WITH user_cte AS (SELECT id, username FROM users WHERE status = 1) SELECT * FROM user_cte WHERE username LIKE '%test%';SELECT * FROM (SELECT id, username FROM users WHERE status = 1) AS user_cte WHERE username LIKE '%test%';
内容的提问来源于stack exchange,提问作者Akash
相关产品推荐
相关产品推荐

