Задать вопрос
Qwentor
@Qwentor
Веб-программист

Как вычислить кто делает определенные запросы к базе?

Ситуация такая:
есть в базе таблица с пользователями (назовем ее users) - в ней периодически кто-то правит данные пользователей методом DELETE/INSERT (похоже на то, поскольку меняется id). Так вот id меняться ни в коем случае не должен, т.к. на него завязано много других таблиц. Но, блин, меняется! Только UPDATE должен применяться. От этого база потихоньку превращается в кашу, которую мне разгребать. Никто из разработчиков в таком поведении не сознается. Я все свои скрипты уже три раза перепроверил - нет нигде таких запросов.
Вопрос: можно ли как-то вычислить откуда идут подобные запросы? С какого ip? Или хоть какую-то идентифицирующую информацию получить.
  • Вопрос задан
  • 258 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Qwentor
@Qwentor Автор вопроса
Веб-программист
БЛИН! ХА-ХА! И еще БЛИН!

Извините)))

Вычислил диверсанта)
Короче, я пытал разработчиков, а этот мордор устроил ЗАКАЗЧИК

Короче, есть 2 части веб-приложения с разными командами разработки. Связаны между собой посредством апи, без прямого доступа в бд друг-друга. В обоих частях есть список пользователей, и он должен совпадать. И если в первой пользователь поменял почту, к примеру, то вторая часть откажется его пускать. Так вот.. В таких случаях заказчик САМ менял во 2 части соответствующие данные. И да, методом DELETE/INSERT всей строки)) Естественно id менялся.

Нахрена он это делал сам и почему не поручил никому автоматизировать - хрен его знает)

Объяснил ему, что он немного не то делает) Вроде понял) Автоматизация, естественно, на мне, раз я предложил.

Можно я еще поржу немного?))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Чтобы такого не происходило, задайте внешние ключи (FOREIGN KEY) с блокировкой удаления/изменения (ON DELETE RESTRICT ON UPDATE RESTRICT).
Внешние ключи как раз предназначены для автоматического поддержания связности данных между таблицами.
Ну и, заодно, увидите, у кого скрипты начнут ошибки выдавать.
Ответ написан
Exploding
@Exploding
wtf?
Повесьте триггеры на after insert и before delete события для нужной таблицы и пишите в отдельную таблицу все, что нужно, для раскрытия этого громкого преступления века: логин пользователя, метка времени, нужные ID и т.д.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
Только UPDATE должен применяться

почему бы и нет?
update `users` 
set id = 42
where username = 'Duglas Adams'

UPD: как вариант логировать запросы на уровне прослойки бд, например по регулярке или вообще все. Хорошим решением так же будет по совету Rsa97 повесить внешние ключи на таблицу и отслеживать ошибки нарушения связанности.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы