0

クライアント用に新しい分類法を作成する必要があり、これらの用語と分類法に関連付けられているノードを新しい分類法に割り当てる必要があります。MySQL を介して更新ステートメントを使用してこれを行い、すべてのノードが特定の用語に関連付けられるようにしました。現在、新しいものに関連付けられています。

UPDATE taxonomy_copy SET tid = 316 WHERE tid = 152

クエリを実行すると、すべてのノードが新しい分類法に関連付けられていることが示されますselect *が、フロント エンドを確認すると、ノードはまだ以前の分類法に関連付けられています。キャッシュと履歴をクリアしましたが、それでも解決しません。

この問題を解決する方法はありますか??

4

1 に答える 1

2

ここで暗闇の中で突き刺す...

昨日まったく同じ質問を投稿した 'Chris' に返信したように、データが実際にどのように保存されているかを考慮せずに、taxonomy_indexテーブルを更新している可能性があります (標準の Drupal インストールには存在しない ではありません)。taxonomy_copyノード。

テーブルは単なるインデックス テーブルであり、「実際の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_nameDrupal 7 ではフィールド データが 2 か所に保存されるため、同じことを実行する必要があります。

これは推測にすぎないことに注意してください。データベースに対してこれ以上クエリを実行する前に、これが間違いなく問題であることを確認する価値があります。

于 2012-09-07T14:08:01.917 に答える