我必须为客户创建新的分类法,他们希望将与这些术语和分类法关联的节点分配给新的分类法,我通过 MySQL 使用更新语句完成了此操作,以便所有与某个术语相关联的节点现在与新的相关联,例如
更新 taxonomy_copy SET tid = 316 WHERE tid = 152
现在,当我进行select *
查询时,它显示所有节点都与新分类法相关联,但是当我检查前端时,节点仍与以前的分类法相关联。我已经清除了缓存和历史记录,但这仍然无济于事。
任何想法如何解决这个问题?
在这里在黑暗中刺伤......
正如我回答昨天发布完全相同问题的“克里斯”taxonomy_index
一样,您可能正在更新表(不是taxonomy_copy
,在标准的 Drupal 安装中不存在),而没有考虑到这些数据实际上是如何存储的节点。
该taxonomy_index
表只是一个索引表,“真实”数据存储在字段表中(因为分类术语通过 Drupal 7 中的字段与实体相关)。因此,更新taxonomy_index
实际上不会更新您要查找的数据。
您确实需要使用 API 函数来处理此类事情,但是由于您已经更新taxonomy_index
了数据,因此目前处于一致状态。
我还建议手动更新field_data_field_name
andfield_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 个位置,因此必须运行相同的操作。
请记住,这只是一个猜测,在对数据库运行更多查询之前,值得确认这绝对是问题所在。