Товарищи,
Была смена ников ряда активных участников phpBB 3.x. Почти везде они поменялись (phpBB рулит), но в тех же цитатах остались старые (оно и понятно - лежит в формах). Некузяво. Хочется проактулизировать везде. "Поштучно" искать через тот же PhpMyAdmin - это как-то долго и криво. Да и вообще, не только в цитатах находит их MySQL. А также в полях, назначение которых для меня - загадка. Как бы чего не сломать... В общем, есть идеи как корректно и красиво решить эту задачу?
Замена старых ников на актуальные
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
KPEM
- phpBB 1.2.0
- Сообщения: 17
- Стаж: 17 лет 3 месяца
- Благодарил (а): 2 раза
-
Shredder
- Former team member
- Сообщения: 2266
- Стаж: 17 лет 9 месяцев
- Благодарил (а): 283 раза
- Поблагодарили: 584 раза
Re: Замена старых ников на актуальные
Для цитат:
Если осталось ещё и в тексте самих сообщений (иногда обращаются друг ко другу по нику, в т.ч. по всяческим его "модификациям"), то, кроме как вручную, эта задача практически нерешаема.
Код: Выделить всё
UPDATE `phpbb_posts` SET `post_text` = REPLACE( post_text, '[quote="старый_ник"', '[quote="новый_ник"' )-
KPEM
- phpBB 1.2.0
- Сообщения: 17
- Стаж: 17 лет 3 месяца
- Благодарил (а): 2 раза
-
Shredder
- Former team member
- Сообщения: 2266
- Стаж: 17 лет 9 месяцев
- Благодарил (а): 283 раза
- Поблагодарили: 584 раза
Re: Замена старых ников на актуальные
Для цитат SQL-запрос можно использовать благодаря их уникальной кодовой конструкции - можно быть уверенным, что таким способом не заменишь ничего лишнего. Для обычных же ников в сообщении - всё сложнее. Грубо говоря, если ник пользователя был мышь, и по этому нику обращались к нему в сообщениях, то в случае совпадения ника с частью простого текста, где это слово употреблялось не в качестве ника, а в ходе обычного разговора (например: "моя кошка съела мышь"), оно будет также заменено, потому что MySQL - не человек и не видит между ними различий. Но если ники были совсем уж какими-нибудь уникальными, типа Shadow001, то вполне можно обойтись запросом:
Запрос затронет одновременно и цитаты и вообще все вхождения слова в текст сообщений.
Код: Выделить всё
UPDATE `phpbb_posts` SET `post_text` = REPLACE( post_text, 'старый_ник', 'новый_ник' )-
KPEM
- phpBB 1.2.0
- Сообщения: 17
- Стаж: 17 лет 3 месяца
- Благодарил (а): 2 раза
Re: Замена старых ников на актуальные
Да я это все понимаю, поэтому все же начал править ручками. И еще - нужно искать по жестким запросам, так как ники, скажем, "Вас", "Васил" и "Василек" могут существовать параллельно.
-
Shredder
- Former team member
- Сообщения: 2266
- Стаж: 17 лет 9 месяцев
- Благодарил (а): 283 раза
- Поблагодарили: 584 раза
Re: Замена старых ников на актуальные
Я немного подредактировал первый запрос. Сделал его более жёстким, чтобы в вашем примере можно было использовать. Теперь будет нормально работать.
Сделайте бекап БД в любом случае - это следует делать при любых изменениях в базе.
Сделайте бекап БД в любом случае - это следует делать при любых изменениях в базе.

