MySQL报1054列不存在错误:referral_code查询异常如何解决?
SQL查询报错:Unknown column 'xxx' in 'where clause' 的解决方法
问题背景
执行SELECT * FROM users WHERE user_id=102030;能正常返回包含referral_code为rbNqMtqL的结果,但执行SELECT * FROM users WHERE referral_code="rbNqMtqL";时抛出错误:Column not found: 1054 Unknown column 'rbNqMtqL' in 'where clause'。
核心原因
MySQL默认SQL模式下,双引号"被用于引用标识符(列名、表名等),而非字符串常量。所以语句里的"rbNqMtqL"被数据库误判为列名,导致找不到对应列而报错。
解决方法
- 方法一:使用单引号包裹字符串值(推荐)
这是SQL标准的字符串常量写法,所有数据库都兼容,直接修改查询语句:SELECT * FROM users WHERE referral_code='rbNqMtqL'; - 方法二:修改MySQL的SQL_MODE配置
如果习惯使用双引号,可以开启ANSI_QUOTES模式,开启后双引号会被解析为字符串值:- 临时生效(仅当前会话或全局,重启MySQL后失效):
-- 全局生效,新会话会继承 SET GLOBAL sql_mode = 'ANSI_QUOTES'; -- 当前会话立即生效 SET SESSION sql_mode = 'ANSI_QUOTES'; - 永久生效:修改MySQL配置文件(如Linux的
/etc/my.cnf,Windows的my.ini),在[mysqld]段添加:
保存后重启MySQL服务即可。sql_mode = ANSI_QUOTES
- 临时生效(仅当前会话或全局,重启MySQL后失效):
内容的提问来源于stack exchange,提问作者AKP
相关产品推荐
相关产品推荐

