【问题标题】:MySQL Column giving Insert / Update errosMySQL 列给出插入/更新错误
【发布时间】:2013-10-10 14:53:31
【问题描述】:

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

【问题讨论】:

  • 显示您的选择语句。
  • civicrm_note 可以是视图吗?
  • 可能有一个与表关联的触发器,并且错误来自那里。
  • 这里发生了其他事情。我会仔细查看您的架构。
  • 添加了 SELECT 语句。 civicrm_note 不是视图。桌上有触发器 - 我现在要调查一下。

标签: mysql sql-update sql-insert civicrm


【解决方案1】:

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

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

【讨论】:

  • bpmccain,您可能有兴趣知道我们中的许多人即将推出 CiviCRm StackExchange 网站 - 请参阅 area51.stackexchange.com/proposals/77367/civicrm。虽然我们最近有 300 多名活跃的提交者,但我们需要更多像你这样在另一个 StackExchange 站点上拥有 200 名声望的人来提交。请考虑帮助我们解决这个问题!谢谢。
【解决方案2】:

我猜这是 Barmar 提到的触发问题。看看这里: MySQL Error 1054: Unknown column in 'field list' on INSERT

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

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

【讨论】:

  • entity_id 不是 PK,但是有一个 id 字段是 PK。这是自动递增的,不需要包含在内。寻找触发器
  • 我听到了。找到解决方案后,请随时发布。祝你成功。
猜你喜欢
  • 2015-07-02
  • 1970-01-01
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 2016-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多