可能是什么原因?
在同一个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)
解决方法:
显示触发器;
如果有人在没有检查构建的情况下触发了一个触发器(对他来说很遗憾,这是一件非常糟糕的事情),那么它会在没有告诉你任何事情的情况下使你的查询失败.
这真的很棘手,因为你无法直接看到错误与触发相关,如果你不使用触发器/不知道它们是一些,唯一的方法是在丢弃后自己重建表.