有一个mysql表的奇怪问题。我可以在SELECT语句中使用列'entity_table'而没有任何问题,但是它给了我任何UPDATE或INSERT语句的问题。
具体来说,我正在
"Error Code: 1054. Unknown column 'entity_table' in 'field list'"
该列肯定存在,因为我可以在上面提到的SELECT语句中使用它。
我在以下两个语句中都得到完全相同的错误:
INSERT INTO `civicrm_note` (`entity_table`) VALUES ('civicrm_relationship')
和
INSERT INTO `civicrm_note` (`entity_id`) VALUES (513576)
这很有趣,因为我甚至没有在第二个语句的字段列表中引用entity_table。
据我所知,数据库中的任何其他表或字段都没有问题。
这个SELECT语句工作正常:
SELECT * FROM civinbla.civicrm_note WHERE entity_table = 'civicrm_contact';
答案 0 :(得分:2)
答案与触发器有关。我们的数据库上的触发器都是使用仅为应用程序存在的MySQL用户以编程方式创建的。出于某种原因,AFTER INSERT和AFTER UPDATE触发器已被修改,因此DEFINER是root而不是应用程序用户。
将DEFINER更改为应用程序用户,一切正常。
答案 1 :(得分:1)
我猜这是巴马尔提到的触发问题。看看这里: MySQL Error 1054: Unknown column in 'field list' on INSERT
此外,如果entity_id
是主键,您可能希望在一个语句中插入两个值(entity_table
和entity_id
)。否则,该表将不会进行插入。
我不知道,如果这会引起这样的错误。