Показать сообщение отдельно
Непрочитано 18.11.2010, 12:26   #1
Аватар для TieLay
Герой

Автор темы (Топик Стартер) Перенос игроков и их данных с одной сборки на другую

И так для начала, делаем резевную копию базы-источника, ибо потом нам предстоит удалять некоторые таблицы.

После того как резервная копия сделана удаляем последовательно все таблицы, КРОМЕ перечисленных ниже:
Цитата:
account_data
inventory
item_stones
legions
legion_announcement_list
legion_emblems
legion_history
legion_members
players
player_appearance
player_effects
player_macroses
player_passkey
player_pets
player_punishments
player_quests
player_recipes
player_settings
player_skills
player_titles
player_world_bans
В оставшихся таблицах через редактор свойств таблиц удаляем те колонки, что будут отсутствовать в той БД, куда мы планируем перенести данные.

После чего делаем дамп оставшегося обрубка.

Затем наполняем базовым содержанием базу-приёмник и делаем её резевную копию на случай не восстановления после некорректного слияния.

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

Вооружившись текстовым редактором правим файл-дамп заменяем строки
Цитата:
DROP TABLE IF EXISTS `player_titles`;
CREATE TABLE `player_titles` (
`player_id` int(11) NOT NULL,
`title_id` int(11) NOT NULL,
PRIMARY KEY (`player_id`,`title_id`),
CONSTRAINT `player_titles_ibfk_1` FOREIGN KEY (`player_id`) REFERENCES `players` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=MyISAM DEFAULT CHARSET=utf8

INSERT INTO player_titles VALUES
(11111,1);
на такую запись

Цитата:
INSERT INTO player_titles (player_id, title_id) VALUES
(11111,1);
Так же необходимо учитывать, что в таблице inventory содержимое столбца itemUniqueId в объединяемых базах не должно совпадать, иначе пересекающиеся по этому столбцу данные будут отброшены при наложении как дублирующиеся и часть пользователей может недосчитаться части инвентаря.

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

Добавлено через 16 минут
Если есть ошибки - пишите, исправлю...

Последний раз редактировалось TieLay; 18.11.2010 в 13:27. Причина: Добавлено сообщение
TieLay вне форума Ответить с цитированием
Сказали спасибо: