HELP

nod32

Выдающийся
Местный
Сообщения
82
Розыгрыши
0
Репутация
174
Реакции
19
Баллы
1 310
2015/11/29 10:22:16 INFO 1 l2s.commons.text.Strings Loaded 414 translit entrys
2015/11/29 10:22:16 INFO 1 l2s.game.idfactory.IdFactory Clear characters online status and accesslevel.
2015/11/29 10:22:17 INFO 1 l2s.game.idfactory.IdFactory Total cleaned: 0, updated: 0 elements in database.
6652366.jpg
Далее сервер не загружается, если ставлю чистую базу все гуд, в чем косяк
 
Последнее редактирование модератором:

Есть уникальные иды которые генерит IdFactory. И если вдруг 2 УНИКАЛЬНЫХ ид совпало оно выдает ошибку и дропает сервер.
Как пофиксить ? Рыть ядро в поисках косяка.
 
подскажите запрос на удаление. дубликатов в таблице items
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
думаю дубликаты туда и не залились бы :cautious:
как правило, мат в ответ бы получили
 
так откат делаю на день все гуд стартует
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
мне просто интересно, вы так уверенны. что дубликаты именно в items, как они туда попали? :) Что вы делали?
 
Я лично не делал ни чего просто именно и за itemsне грузит сервер
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
ТС предлагаю поступить методом исключения, сначала дропните таблицу items (пробуйте завести сервер), далее таблицу characters, и так далее, таким способом можно исключить и найти таблицу с которой предстоит работать
PS структуру items дайте

Код:
select  object_id, Count(object_id) as Count
from items
group by object_id
having count(object_id)>1
 
Последнее редактирование:
  • Мне нравится
Реакции: kick

    nod32

    Баллов: 6
    За то, что не прошли мимо

    Mangol

    Баллов: 22
    Без комментариев

    kick

    Баллов: 29
    Без комментариев
Проблема решена огромное спасибо EVA за помощь и то, что не прошла мимо
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Если у кого подобная неприятность случится, то надо найти конфликтный Id. В случае с nod32 был конфликт в таблицах characters и items. И туда, и туда записался уникальный Id с одним и тем же значением. Чтоб его найти, нужно скопировать уникальные Id`ы с обеих таблиц (characters и items) во временную таблицу с помощью запроса и потом выбрать запросом дубликаты.

Делаем так:
1. Создаём таблицу, можно в базе сервера, обзываем её tmp, в ней делаем одно поле с именем Id и типом Unsignet Int.
2. Копируем значения уникальных ID c таблиц characters и items запросами:
Код:
INSET INTO tmp(Id) SELECT obj_id FROM characters;
INSET INTO tmp(Id) SELECT object_id FROM items;
3. Теперь ищем во временной таблице двойные Id запросом:
Код:
SELECT id, Count(id) AS Count
FROM tmp
GROUP BY id
HAVING Count(id)>1
4. В случае если есть дубликаты вы получите этот Id и кол-во, останется только удалить эту запись...а вот с какой таблицы решать вам.

0f05f70bf54b.png
 
Последнее редактирование:
а еще можно сделать просто вот так к примеру
Код:
select obj_Id from characters join items on (characters.obj_Id = items.object_id)
и никаких временных таблиц создавать не требуется
 
Назад
Сверху Снизу