1

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';
4

2 回答 2

2

答案与触发器有关。我们数据库上的触发器都是使用仅为应用程序而存在的 MySQL 用户以编程方式创建的。出于某种原因,AFTER INSERT 和 AFTER UPDATE 触发器已被修改,因此 DEFINER 是 root 而不是应用程序用户。

将 DEFINER 更改为应用程序用户,一切正常。

于 2013-10-10T19:13:07.140 回答
1

我猜这是 Barmar 提到的触发问题。看看这里: MySQL 错误 1054:INSERT 上的“字段列表”中的未知列

此外,如果entity_id是主键,您可能希望在一个语句中插入两个值 (entity_table和)。entity_id否则,表格将不会接受您的插入。

不过,我不知道这是否会引发这样的错误。

于 2013-10-10T15:09:27.737 回答