Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#1 2010-11-08 21:57:30

scalemaster
Участник
Зарегистрирован: 2009-08-10
Сообщений: 134

Чем править ошибки в базе?

К примеру, занимался слиянием двух баз. Правил в ручную. Ну, вы понимаете, надо в нескольких таблицах исправить, чтобы везде счётчики корректно считали, положение на досках соответствовало реальности, имена первых-последних и прочее... Потом пришлось добавить посты не последними,  а сделать "врезку" по времени. Та ещё веселуха. Что-то начало надоедать...
Чем это можно автоматизировать? На ум приходит Forum cleanup. Помнится, на 1.2 ставил, что-то там работало, так и не понял. Есть у кого опыт? Какие альтернативы? Есть ли потребность во внешней утилите? Если очень актуально, можно накропать десктоповую под WIn  с прямым подключением к MySQL.

Offline

#2 2010-11-09 07:44:31

artoodetoo
Admin by chance
Зарегистрирован: 2008-09-09
Сообщений: 887
Сайт

Re: Чем править ошибки в базе?

Думаю "поправить" неудачное слияние уже зае*ёшся. Надо делать с нуля правильно.

Готового решения не знаю. Я бы поступил так: слил бы оба форума на свой localhost в одну базу (с разными префиксами), затем один из наборов принял бы за "основной", второй надо добавить к первому с изменением id.

Вручную бы выяснил макс. значение id для каждой "основной" таблицы, записал бы эту дельту на бумажке, составил бы план и написал текст запросов для копирования. Типа

INSERT INTO base_posts(id, topic_id, poster_id, message) SELECT id+2077, topic_id+568, poster_id+123, message FROM aux_posts

Всё, что нужно, это phpmyadmin и внимательность.

Потом если результат на localhost устраивает, слил бы назад на хостинг. Есть, конечно заморочка с текстовыми ссылками внутри сообщений, только это уже не такая острая проблема, можно как-нибудь потом поискать и поправить.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Offline

#3 2010-11-09 12:29:11

scalemaster
Участник
Зарегистрирован: 2009-08-10
Сообщений: 134

Re: Чем править ошибки в базе?

artoodetoo, а просто циферки итоговые поправить есть решение? Forum cleanup хоть как-то помогает? Что-то лениво ставить для теста...

Offline

#4 2010-11-09 12:44:28

artoodetoo
Admin by chance
Зарегистрирован: 2008-09-09
Сообщений: 887
Сайт

Re: Чем править ошибки в базе?

Не знаю что такое forum cleanup.
В какой момент тебе хочется править циферки? Если у тебя в обоих форумах есть записи с одним и тем же уникальным ключом, их нельзя слить без потерь. В одной таблице не может быть двух записей с одним первичным ключом, это, блин, закон!
Можно сделать одно из двух:
а) UPDATE aux... SET id=id+xxx и затем INSERT INTO base ...SELECT ... FROM aux...
или как я писал выше
б) INSERT INTO base ...SELECT id+xxx... FROM aux...


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Offline

#5 2010-11-09 15:14:45

scalemaster
Участник
Зарегистрирован: 2009-08-10
Сообщений: 134

Re: Чем править ошибки в базе?

Да я не пытаюсь ключ продублировать, нужно устаканивать счётчики постов, юзеров, топиков... и т.д.
forum cleanup —  у меня стоял когда-то...

Offline

#6 2010-11-09 15:18:17

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,236
Сайт

Re: Чем править ошибки в базе?

forum cleanup должен устаканить кол-во постов и последнии посты, но он не выправляет первые посты тем, что может иногда понадобится.

Offline

Подвал доски

Под управлением FluxBB. Хостинг Hostens