标题说起:
首先感谢您能点击到这篇文章,对于一个不算新手的我来说,这个标题在学校刚学习数据库的时候,大家都不陌生了,经常出现的场景在一些select、update、insert 列名写的不对,都有可能出现这样的error 提示,但是对于我个人来说,生产上一个运行了很久的insert 语句突然接收到了elk 的一个报警,插入时列找不到,让我很是懵* 啊 ,有点丈二和尚摸不着头脑的感觉。
场景再现:
elk 报警信息大致如下 INSERT INTO table_name (userId,birth) VALUES (?,00000000); ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'userPersonalInfoId' in 'field list' ;
运行了很长时间的简单的sql ,怎么会出现这中问题呢,当时就找了dba ,dba 给的解释是可能是跨库插入(系统操作两个库,双写),这个解释很敷衍,我觉得不应该会有问题,带着好奇和敷衍,在这个周日我还是带着问题,一探究竟;
问题排查:
可能出现原因:
1. sql 本身错误(排除)2. 其他被触发的sql(spring aop /触发器)
第一种不可能,第二种spring aop 也不可能,报错代码行数明显是执行插入语