Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Восстановление удаленных тем

Проблемы с установкой или работой phpBB 3.3.x? Получите помощь здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Форумъ
phpBB 1.4.4
Сообщения: 128
Стаж: 5 лет 9 месяцев
Благодарил (а): 52 раза
Поблагодарили: 2 раза

Восстановление удаленных тем

Сообщение Форумъ »

Добрый день, уважаемые гуру.
Тема не новая, весеннее обострение, супермодератор с правами удаления сообщений из БД грохнул 40 тем, права убрал, но поздно, в общем задача темы восстановить. Нашел старую закрытую тему Восстановить удаленные сообщения с форума .
Собственно вопросы, помогите, пожалуйста.
Имеется рабочая БД имя "BASE", префикс "bb_", резервная копия развернута в другую БД, имя "DUMP", префикс "bb_"
1. Скрипты для phpBB 3.0.х актуальны и для 3.(1-3).х? Или нужно допилить код скрипта?
Код скрипта 

Код: Выделить всё

<?php

/**
*
* install / repair / maintenance script
* @license http://opensource.org/licenses/gpl-license.php GNU Public License 
*
*/

/**
* @ignore
*/

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Настройки Базы Данных, откуда будут браться данные для восстановления
$res_db_name = 'test_db'; // вставьте сюда имя вашей БД вместо test_db
$res_db_prefix = 'phpbb_'; // префикс БД, обычно phpbb_ . измените на свой, если у вас отличается
// ID нужных вам тем для восстановления, через запятую
$res_array = array(9, 70);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

$this_url = append_sid(generate_board_url() . "/topics_restore.$phpEx");

// We only allow a founder to run this script
if ($user->data['user_type'] != USER_FOUNDER)
{
	if (!$user->data['is_registered'])
	{
		login_box($this_url, $user->lang['NOT_AUTHORISED']);
	}
	trigger_error('NOT_AUTHORISED');
}

foreach ($res_array as $topic_id)
{
	$db->sql_query('INSERT INTO ' . TOPICS_TABLE . ' SELECT * FROM ' . $res_db_name . '.' . $res_db_prefix . 'topics WHERE topic_id = ' . $topic_id);

	$db->sql_query('INSERT INTO ' . POSTS_TABLE . ' SELECT * FROM ' . $res_db_name . '.' . $res_db_prefix . 'posts WHERE topic_id = ' . $topic_id);
}


$message = 'Работа скрипта успешно завершена!<br /><br />';
$message .= 'Очистите кеш конференции, синхронизируйте форумы и пересоздайте поисковые индексы.<br /><br />';
$message .= 'Удалите этот скрипт с вашего сервера!';

trigger_error($message);

?>
2. Правильно ли я подставил значения?
$res_db_name = 'DUMP';
$res_db_prefix = 'bb_';
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 5 месяцев
Благодарил (а): 37 раз
Поблагодарили: 261 раз

Re: Восстановление удаленных тем

Сообщение Pazh »

1. актуально. Восстанавливаются только темы и сообщения. После выполнения скрипта обязательно делать синхронизацию форумов через админку (для каждого форума индивидуально), т.к. значения в таблице форумы не восстанавливаются и синхронизацию сообщения пользователей в админке
2. Если полное имя резервной БД у Вас DUMP, а имена таблиц например bb_topics, то верно
Последний раз редактировалось Pazh 20.02.2022 12:19, всего редактировалось 1 раз.
Помощь в ЛС/email только за WM или ЮMoney
Форумъ
phpBB 1.4.4
Сообщения: 128
Стаж: 5 лет 9 месяцев
Благодарил (а): 52 раза
Поблагодарили: 2 раза

Re: Восстановление удаленных тем

Сообщение Форумъ »

Pazh писал(а): 20.02.2022 11:50 Если полное имя резервной БД у Вас bb_DUMP, то верно
Так, я запутался, вот скриншоты с реальными именами: Префикс же у таблиц, не у БД??

$res_db_name = 'u275446_arc';
$res_db_prefix = 'bb_';
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Форумъ 20.02.2022 12:19, всего редактировалось 1 раз.
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 5 месяцев
Благодарил (а): 37 раз
Поблагодарили: 261 раз

Re: Восстановление удаленных тем

Сообщение Pazh »

Форумъ, сорри, да префикс у таблиц. Вы правильно написали
Помощь в ЛС/email только за WM или ЮMoney
Форумъ
phpBB 1.4.4
Сообщения: 128
Стаж: 5 лет 9 месяцев
Благодарил (а): 52 раза
Поблагодарили: 2 раза

Re: Восстановление удаленных тем

Сообщение Форумъ »

В общем скрипт реально работает, темы восстановились на ура, только Мастерхост очень ругался, :D :D
Мастерхост писал(а):Вас приветствует компания .masterhost!
Уведомляем Вас, что работой базы данных MySQL создается повышенная нагрузка на сервер баз данных. Примеры запросов находятся в прикрепленном файле.
Оптимизируйте, пожалуйста, Ваши скрипты, SQL-запросы и дайте нам знать о результатах. Например, Вы можете использовать метод EXPLAIN для выяснения "тяжелых" запросов и создание индексов (CREATE INDEX), тем самым снизив нагрузку на базу данных:
Это уведомление отправляется системой автоматически, если фиксируется более 30 запросов mysql, выполняющихся дольше 10 секунд. Критической нагрузки на сервер не было, это уведомление предназначено только для информирования. Список запросов, попавших в лог mysql slow queries - во вложении.

Вернуться в «Поддержка phpBB 3.3.x»