Здравствуйте, очень нужна ваша помощь.
Обновил сайт с 5 на 6ую версию друпала, но модуль privatemsg обновить корректно так и не удалось. Пробовал обновлять с последней версии под пятёрку, это privatemsg 3.0 на последнюю dev для шестёрки, на RC2 где было заявлено об апгрейде, на RC4 - везде возникали ошибки и переписки пользователей не переносились в новую версию.
Обновить до конца, без ошибок, удалось лишь на пропатченную версию которую мне дали в иссуях на друпал.орг, но после апгрейда у пользователей пропали все переписки, а их важно сохранить. Причем в новой таблице pm_messages они есть.
Для начала хочу спросить:
Сталкивались ли вы с апгрейдом этого модуля?
С какой на какую версию обновляли?
Сохранялись ли переписки пользователей?
На вскидку, сколько было приватных сообщений всего? У меня их чуть больше 67 000, таблица с ними весит 58 метров.
Позже допишу сюда ошибки которые возникали при обновлении, может быть сможете помочь...
Комментарии
Обновлял с 5 до 6... примерно весной. этот модуль обновился без косяков.
batbug, на какую версию друпала обновлял?
не помню, на последнюю на тот момент.
С горем пополам сделал апгрейд, удалось сохранить сообщения.
Апгрейдил друпал 5.20 -> 6.10 потом privatemsg 5.x-3.0 -> privatemsg 6.x-1.0 RC4.
Сначала выскочила ошибка в функции 6000 на шаге, где создается и наполняется temp_pm_index - посмотрел в базу - наполнилась до конца, удалил этот кусок в функции 6000 и повторил обновление - опять ошибка на следующем шаге, причем в dblog никаких записей, и судя по базе этот шаг обновления выполнился до конца - тоже вырезал его и продолжил обновление, и так до конца
ёмоё, всётаки апгрейд был неудачным, скопировались первые 65 тысяч (из 67) но и среди них есть пропавшие безвести!
вот есть такой код в .install файле модуля:
$data = db_query("SELECT * FROM {privatemsg}");
while ($result = db_fetch_array($data)) {
if ($result['thread'] == 0) {
$result['thread_id'] = $result['id'];
}
else{
$result['thread_id'] = 0;
}
if ($result['author'] <> $result['recipient']) {
db_query("INSERT INTO {pm_message} (mid, author, subject, body, timestamp) VALUES ( %d, %d, '%s', '%s', %d )", $result['id'], $result['author'], $result['subject'], $result['message'], $result['timestamp']);
db_query("INSERT INTO {temp_pm_index} (mid, thread, folder, thread_id, uid, is_new, deleted) VALUES ( %d, %d, %d, %d, %d, %d, %d )", $result['id'], $result['thread'], $result['folder'], $result['thread_id'], $result['recipient'], $result['newmsg'], $result['recipient_del']);
}
db_query("INSERT INTO {temp_pm_index} (mid, thread, folder, thread_id, uid, is_new, deleted) VALUES ( %d, %d, %d, %d, %d, %d, %d )", $result['id'], $result['thread'], 0, $result['thread_id'], $result['author'], 0, $result['author_del']);
}
}
Какой-то из этих запросов к базе выполняется с ошибкой на каком то шаге цикла, так вот подскажите что туда воткнуть чтобы оно, в случае ошибки, писало в файл или хоть на экран полезную для отладки инфу... да или хоть весь процесс
Важно сохранить все переписки
ёмоё, сорь
видимо дело в сервере, слишком большая таблица и вываливало ошибку 500 в дблог. ну она зелененькая была потому и не обратил внимания :]
изначально был сбит с толку ошибками, которые были результатом того, что бекап базы делался без перевода сайта в режим обслуживания. самооправдан ^^)
Все решилось, обновил на локалхосте... обновление минут 10 шло
Время тестировать релиз и финализировать русский перевод, детали