mysql 1054 42s22_MySQL 触发器的坑:ERROR 1054 (42S22): Unknown column 'xxx' in 'field list'

在遇到 MySQL 错误 1054(42S22)时,通常是因为字段缺失。但本文通过一个实例展示了即使SQL语句中未提及该字段,也会因触发器导致相同错误。作者通过检查触发器,发现了同步数据库中对应表缺少字段,从而解决了问题。此外,还提到了在排查此类问题时使用MySQL命令行的好处,以及避免触发器滥用的建议。
摘要由CSDN通过智能技术生成

今天线上项目报错了 500 错误,Laravel 日志中显示

Illuminate/Database/QueryException with message 'SQLSTATE[42S22]:

Column not found: 1054 Unknown column 'is_charge' in 'field list'

(SQL: update `some_categories` set `lft` = case when `lft` >= 29 then `lft`+2 else `lft` end, `rgt` = case when `rgt` >= 29 then `rgt`+2 else `rgt` end where (`lft` >= 29 or `rgt` >= 29))'

即新增层级菜单的时候,更新历史节点的 left right 值报错。

但是,报错很诡异,SQL 语句中并没有 is_charge 出现,但是却一直报

Column not found: 1054 Unknown column 'is_charge' in 'field list'

这个错误很常见,以往都是因为线上数据表表没有同步新增字段,引起字段缺失。但是,完全不相关的 SQL 语句怎么会报出这个错误呢?

排除 Laravel 的问题

为了排除是 Laravel 的三方依赖问题,我直接在 MySQL 命令行中执行测试:

mysql> u

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值