Как грамотно удалить комментарии с помощью sql-запроса в Drupal 7?

Главные вкладки

Аватар пользователя Глот с планеты Катрук Глот с планеты ... 16 февраля 2017 в 23:16

Доброго времени. Ситуация следующая. Боты набросали порядка 30 тыс. комментов на страницах, где позволено было анонимно оставлять комментарии. Я ничего умнее не смог придумать, как удалить спам напрямую через PHP MyAdmin из таблицы commentс. Однако, в последствии, комментарии вообще перестали добавляться. При попытке оставить их выводится сообщение (см. прикреплённый скрин) из которого я понял, что комментарии, или какие-то связанные данные об оставленных комментариях, хранятся не только в таблице commentс, но и, судя по всему, в других таблицах. В частности в field_data_comment_body. Подскажите пожалуйста, как грамотно составить запрос для удаления комментариев. Из каких таблиц и полей надо ещё удалять данные? Или что-нибудь ещё дельного посоветуете. Предупреждаю сразу, не очень силён в API-Drupal. Заранее всем благодарен.

ВложениеРазмер
Иконка изображения 2017-02-17_001329-drupal.jpg82.45 КБ

Комментарии

Аватар пользователя Studio VIZA Studio VIZA 17 февраля 2017 в 2:05

Взорвалгараж, памогите завести машину. Надо было тупо напрячься чистить, есть неплохие средства, а щас чо, бэкапы придумали трусы. Нам ли лишать сибя адреналина.

Аватар пользователя Andruxa Andruxa 17 февраля 2017 в 12:51

В принципе, если бэкап есть, то можно продолжить шатать несчастную базу:

DELETE FROM field_data_comment_body
WHERE entity_type = 'comment' AND entity_id NOT IN (SELECT cid FROM comment);

DELETE FROM field_revision_comment_body
WHERE entity_type = 'comment' AND entity_id NOT IN (SELECT cid FROM comment);

Ну и так далее с остальными полями, приаттаченными к каментам.

Аватар пользователя fairrandir fairrandir 17 февраля 2017 в 13:10

+ дополнительно есть таблица node_comment_statistics
+ в коде могли быть какие-то хуки на удаление комментов.
+ возможно у комментов какие-то флаги были.
+ всё что угодно возможно.

Аватар пользователя Andruxa Andruxa 17 февраля 2017 в 16:55

Да. Самый правильный способ - entity_delete_multiple(). Но раз уж автор полез в базу, пусть потренируется на кошках.

Аватар пользователя fairrandir fairrandir 17 февраля 2017 в 14:52

jsv wrote:
все таблицы со словом comment почистите

field_data_field_order_comment - пример вполне легитимного названия, которое не относится к комментариям.
Включать мозг не предлагать, ТС уже грохнул таблицу.

Аватар пользователя jsv jsv 17 февраля 2017 в 21:55

fairrandir wrote:

field_data_field_order_comment - пример вполне легитимного названия, которое не относится к комментариям.

И к чему же такая таблица относится? Вы её название только что выдумали или какой то модуль такую делает? Насколько я знаю нет. Так что не надо чушь нести, у ТС нет никаких самописных модулей или полей с названием comment/
Голову включайте, речь про конкретную историю