Доброго времени. Ситуация следующая. Боты набросали порядка 30 тыс. комментов на страницах, где позволено было анонимно оставлять комментарии. Я ничего умнее не смог придумать, как удалить спам напрямую через PHP MyAdmin из таблицы commentс. Однако, в последствии, комментарии вообще перестали добавляться. При попытке оставить их выводится сообщение (см. прикреплённый скрин) из которого я понял, что комментарии, или какие-то связанные данные об оставленных комментариях, хранятся не только в таблице commentс, но и, судя по всему, в других таблицах. В частности в field_data_comment_body. Подскажите пожалуйста, как грамотно составить запрос для удаления комментариев. Из каких таблиц и полей надо ещё удалять данные? Или что-нибудь ещё дельного посоветуете. Предупреждаю сразу, не очень силён в API-Drupal. Заранее всем благодарен.
Вложение | Размер |
---|---|
![]() | 82.45 КБ |
Комментарии
Тупо транкнули, не подумав? Бэкап базы есть?
Тогда восстанавливать бэкап и https://api.drupal.org/api/drupal/modules!comment!comment.module/functio...
Взорвалгараж, памогите завести машину. Надо было тупо напрячься чистить, есть неплохие средства, а щас чо, бэкапы придумали трусы. Нам ли лишать сибя адреналина.
Ну вот да, торопился очень:((
В принципе, если бэкап есть, то можно продолжить шатать несчастную базу:
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);
Ну и так далее с остальными полями, приаттаченными к каментам.
+ дополнительно есть таблица node_comment_statistics
+ в коде могли быть какие-то хуки на удаление комментов.
+ возможно у комментов какие-то флаги были.
+ всё что угодно возможно.
Да. Самый правильный способ - entity_delete_multiple(). Но раз уж автор полез в базу, пусть потренируется на кошках.
все таблицы со словом comment почистите и скорее всего заработает. Включая индексы
field_data_field_order_comment - пример вполне легитимного названия, которое не относится к комментариям.
Включать мозг не предлагать, ТС уже грохнул таблицу.
Можно же просто посмотреть, какие поля относятся к комментам

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