G
Gemini_13
Гость
Инструкция для корректной смены даты Дня Рождения пользователей в базе.
ВНИМАНИЕ! Все посторонние моды, которые присосались к ДР перестанут работать и будут выбивать ошибки! Эту ревизию нельзя ставить на боевые трекеры, пока бета-тестеры её не обкатают.
1. Делаем бекап БД
2. Установливаем ревизию R495
3. Заливаем скрипт с аттача в корень форума и меняем расширение на .php
PHP:
<?php
define('BB_ROOT', './');
require(BB_ROOT .'common.php');
$user->session_start();
if (!IS_ADMIN)
{
message_die(GENERAL_MESSAGE, $lang['NOT_ADMIN']);
}
set_time_limit(600);
DB()->query("ALTER TABLE ". BB_USERS ." CHANGE COLUMN user_birthday user_birthday_old int(11) NOT NULL DEFAULT 0 AFTER user_gender");
DB()->query("ALTER TABLE ". BB_USERS ." ADD user_birthday date NOT NULL DEFAULT '0000-00-00' AFTER user_gender");
$sql = "
SELECT user_id, user_birthday_old
FROM ". BB_USERS ."
WHERE user_birthday_old != 0
AND user_id NOT IN ('". EXCLUDED_USERS_CSV ."')
";
foreach (DB()->fetch_rowset($sql) as $row)
{
$birthday = realdate($row['user_birthday_old'], 'Y-m-d');
DB()->query("
UPDATE ". BB_USERS ."
SET user_birthday = '". $birthday ."'
WHERE user_id = ". $row['user_id'] ."
");
}
echo 'Done!';
?>
Просто вводите в браузере ссылку на ваш трекер и после слеша дописываете название скрипта. Например,
5. После того, как на мониторе появится надпись 'Done!' нужно зайти в таблицу bb_users и удалить колонку user_birthday_old, если все ДР правильно переконвертировались.
6. Почистить кеш и датастор.
Чтобы не играть в телепатов в случае проблем прошу четко писать на каком пункте проблема и прикладывать логи, если таковы есть, будем исправлять ошибки сразу.