0

我必须为客户创建新的分类法,他们希望将与这些术语和分类法关联的节点分配给新的分类法,我通过 MySQL 使用更新语句完成了此操作,以便所有与某个术语相关联的节点现在与新的相关联,例如

更新 taxonomy_copy SET tid = 316 WHERE tid = 152

现在,当我进行select *查询时,它显示所有节点都与新分类法相关联,但是当我检查前端时,节点仍与以前的分类法相关联。我已经清除了缓存和历史记录,但这仍然无济于事。

任何想法如何解决这个问题?

4

1 回答 1

2

在这里在黑暗中刺伤......

正如我回答昨天发布完全相同问题的“克里斯”taxonomy_index一样,您可能正在更新表(不是taxonomy_copy,在标准的 Drupal 安装中不存在),而没有考虑到这些数据实际上是如何存储的节点。

taxonomy_index表只是一个索引表,“真实”数据存储在字段表中(因为分类术语通过 Drupal 7 中的字段与实体相关)。因此,更新taxonomy_index实际上不会更新您要查找的数据。

您确实需要使用 API 函数来处理此类事情,但是由于您已经更新taxonomy_index了数据,因此目前处于一致状态。

我还建议手动更新field_data_field_nameandfield_revision_field_name表;如果这样做,您希望在节点上看到的数据将在缓存刷新后突然出现。

一个示例查询:

UPDATE field_data_field_name SET field_name_tid = 316 WHERE field_name_tid = 152

field_revision_field_name由于字段数据存储在 Drupal 7 中的 2 个位置,因此必须运行相同的操作。

请记住,这只是一个猜测,在对数据库运行更多查询之前,值得确认这绝对是问题所在。

于 2012-09-07T14:08:01.917 回答