web-dev-qa-db-ja.com

Drupal 7のコメントに関連するデータベーステーブルは何ですか?

Drupal 7.で実行しているWebサイトの1つで大量のスパムコメントを受信しました。それらを一括で削除するための解決策を探して、思いつきました。

DELETE FROM comment WERE status = 0

クエリは機能しましたが、データベースのサイズは大幅に縮小せず、「コメント」テーブルに加えて、別のテーブルが

 field_data_comment_body

コメントの本文が含まれています。

Drupal 7内のコメントに関連するすべてのテーブルを知りたい

4
Binny

これらをPhpMyAdminで実行します。

TRUNCATE TABLE comment;
TRUNCATE TABLE field_data_comment_body;
UPDATE node_comment_statistics SET comment_count = 0;
TRUNCATE TABLE field_revision_comment_body;

注意:コメントはすべて削除されます!

1
doomed

以下の表を知っています。 1.コメント2. field_data_comment_body 3. field_revision_comment_body 4. node_comment_statistics

それに加えて、コメントはモジュールによってインストールされた他のテーブルにも保存され、コメントモジュールにリンクされていると思います。

したがって、問題は、どのテーブルがDrupal 7?のコメントに関連しているか?どのSQLコマンドを実行するかではない;-)です。

(任意のコンテンツタイプの)コメントエンティティにフィールドを追加していない場合、正しいテーブルについてはすでに言及されています。

  • コメント
  • field_data_comment_body
  • field_revision_comment_body
  • node_comment_statistics

コメントエンティティに追加するフィールドごとに、さらに2つのテーブルを取得します。

例:コンテンツタイプ「ブログ」の場合、コメントに電子メールフィールドを追加しました。つまり、admin/structure/types/manage/blog/comment/fieldsでマシン名「field_comment_email」(または同様の名前)のフィールドを見つけます。次に、さらに2つのテーブルがあります。

  • field_data_field_comment_email
  • field_revision_field_comment_email

これはすぐに混乱します。 @Cliveが言ったことを繰り返すには;-)

コメントテーブルから直接コメントを削除することは非常に悪い考えです。API関数を使用する必要があります。

0
hansfn