where子句中的mysql unknown列.一个bug?

可能是什么原因?
在同一个DB上,select语句按预期工作:

select id from line where line.id = 298;

但是以下删除语句失败:

delete from line where line.id = 298;

有错误:

Unknown column 'line_id' in 'where clause'

查询输出:

mysql> delete from line where line.id = 298;
ERROR 1054 (42S22): Unknown column 'line_id' in 'where clause'

mysql> select id from line where line.id = 298;
+-----+
| id  |
+-----+
| 298 |
+-----+
1 row in set (0.00 sec)
mysql> describe line;
+--------------+---------+------+-----+---------+----------------+
| Field        | Type    | Null | Key | Default | Extra          |
+--------------+---------+------+-----+---------+----------------+
| id           | int(11) | NO   | PRI | NULL    | auto_increment |
| service_id   | int(11) | NO   | MUL | NULL    |                |
| src_site_id  | int(11) | NO   | MUL | NULL    |                |
| dest_site_id | int(11) | NO   | MUL | NULL    |                |
+--------------+---------+------+-----+---------+----------------+
4 rows in set (0.01 sec)

解决方法:

显示触发器;

如果有人在没有检查构建的情况下触发了一个触发器(对他来说很遗憾,这是一件非常糟糕的事情),那么它会在没有告诉你任何事情的情况下使你的查询失败.

这真的很棘手,因为你无法直接看到错误与触发相关,如果你不使用触发器/不知道它们是一些,唯一的方法是在丢弃后自己重建表.

上一篇:mysql – 如何确定字段/列是否受UPDATE语句的影响


下一篇:触发器或PHP脚本?