Как удалить тикеты программно
Возникла задача массово удалить полностью все тикеты ( 13000+ ) с сайта.
Пока получилось их только обозначить как удаленные и при попытке почистить корзину, выдает ошибку и ни в какую не желает их удалять. По одиночке все ок, но вот массово, это жесть, чугун, цирконий… в общем никак )).
В логах при попытке очистки корзины:
если через пол года увидите статус этой заметки «выполнен», значит удалял вручную. Спасите!!! )))
Пока получилось их только обозначить как удаленные и при попытке почистить корзину, выдает ошибку и ни в какую не желает их удалять. По одиночке все ок, но вот массово, это жесть, чугун, цирконий… в общем никак )).
В логах при попытке очистки корзины:
[2019-01-18 11:26:19] (ERROR @ /home/radio/www/bazcore/xpdo/om/xpdoobject.class.php : 1452) Error 23000 executing statement:
INSERT INTO `IT64j4a2xBPy_tickets_totals` (`tickets`, `comments`, `views`, `stars`, `rating`, `rating_plus`, `rating_minus`) VALUES (0, 0, 0, 0, 0, 0, 0)
Array
(
[0] => 23000
[1] => 1062
[2] => Duplicate entry '0-' for key 'PRIMARY'
)
P.S.если через пол года увидите статус этой заметки «выполнен», значит удалял вручную. Спасите!!! )))
Комментарии: 6
Попробуй перед очисткой корзины в файле /core/components/tickets/model/tickets/ticket.class.php в методе remove
со строчки 667 закомментировать этот блок
со строчки 667 закомментировать этот блок
if ($total = $this->xpdo->getObject('TicketTotal', array('id' => $this->parent, 'class' => 'TicketsSection'))) {
$total->set('children', $total->get('children') - 1);
$total->save();
}
Можно через PhpMyAdmin выполнить SQL Query
TRUNCATE TABLE tablename
Спасибо за совет, но это не лучший вариант, так как в других таблицах остается инфа о тикетах. Все равно что избавиться от старого дома, а хлам из него оставить.
А религия не позволяет по другим таблицам пройтись?
На сколько я понимаю, «религия» программиста в том, чтобы работал код, а не он. Потому и спрашиваю тут. Но спасибо за участие )).
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.