Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
TemKa_SD

Помогите с SQL запросом банами/разбанами

Рекомендованные сообщения

Лучше всего разобраться, почему возникает ошибка.

 

Согласен, отловить бы, почему такое происходит, ладно, буду тестировать, спасибо большое.

Поделиться сообщением


Ссылка на сообщение

А зачем вы комируете ид из одной таблицу в другую? Они между собой связаны? Кто вам делал этот скрипт с банами на форуме?

Поделиться сообщением


Ссылка на сообщение
09/05/18 19:55 (изменено)

А зачем вы комируете ид из одной таблицу в другую? Они между собой связаны? Кто вам делал этот скрипт с банами на форуме?

 

Да, связаны, там есть раздел "Амнистии" - обжалование бана, там сравнение идет по ID. Автор https://invisioncommunity.com/profile/546002-griefcode/ он щас всё это дело делает на symfony там и интеграция с IPS будет https://git.ohsystem.net/projects/OHS/repos/ohstatsv2/browse, но он как отдельный двиг, а я хочу в виде компонента для IPS, поэтому сам пытаюсь что-то сделать.

Изменено пользователем TemKa_SD

Поделиться сообщением


Ссылка на сообщение

Если таблицы между собой связаны тогда они должны быть синхронизированы, и тот кто делает изменения в одной таблицы учитывал совместимость с другой, в противном случае возможны такие коллизии когда инсерт в таблицах происходит независимо а при копирование данных ид пересекаются. На форуме редко применяется запрос TRUNCATE TABLE для обнуления автоинкремента.

Поделиться сообщением


Ссылка на сообщение

так?

 

ALTER TABLE `stats_banhistory`
 ADD PRIMARY KEY (`id`),
 ADD UNIQUE (`id`);

ALTER TABLE `stats_bans`
 ADD KEY `name` (`name`),
 ADD KEY `ip` (`ip`),
 ADD KEY `srv` (`server`),
 ADD KEY `name_2` (`name`,`server`,`ip`),
 ADD INDEX ( `id` );

ALTER TABLE `stats_bans` ADD FOREIGN KEY ( `id` ) REFERENCES `stats_banhistory` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;

Поделиться сообщением


Ссылка на сообщение

Что-то не то.

 

[Thu Sep 13 02:26:05 2018] [GAME: PETRI BALANCE #91] admin [TemKa_SD] sent command [pban] with payload [this]

[Thu Sep 13 02:26:05 2018] [MYSQL] error --- Cannot add or update a child row: a foreign key constraint fails (`wc3_ghost`.`stats_bans`, CONSTRAINT `stats_bans_ibfk_1` FOREIGN KEY (`id`) REFERENCES `stats_banhistory` (`id`))

Поделиться сообщением


Ссылка на сообщение

Я бы не стал связываться с внешними ключами, а именно в коде где происходит обновления одной таблицы учитвал связь с другой и не записывать левые строки. В banhistory никто не должен ничего записывать кроме записей из основной таблицы. При копирование по задаче вы должны отбирать из основной таблицы те записи которые не существуют в архиве.

Вы уверены что условием expired

При дублирующих ид можно использовать ON DUPLICATE KEY UPDATE вместо простого INSERT. Тогда пересекающиеся записи будут перезаписаны.

Я думаю проблема у вас в логике, вы отбираете уже имеющиеся записи.

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...