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