![]() |
![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток.
Возникла проблема такого рода - волей судьбы пришлось сменить домен и теперь в срочном порядке необходимо заменить все упоминания о старом домене на новый. Большой форум, более 3 миллионов записей в базе данных. Старый домен упоминается крайне часто.
Проблемы и вопросы начинаются с того, что старый домен был второго уровня (поддомен), а новый - первого. Знаний мускуля хватило вот на такой запрос:
UPDATE `имя_таблицы` SET `имя_поля`=REPLACE(`имя_поля`,'xxx.yyy.ru','zzz.ru');
Где xxx.yyy.ru - старый, а zzz.ru - новый домен, соответственно.
Просьба прокомментировать правильность составления запроса. Также у меня есть ещё несколько вопросов, на которые сам ответить уже не в силах:
1) Какие могут возникнуть проблемы при такой замене ? Не будет ли проблем с кодировкой полученного текста и прочим ?
2) Не возникнет ли проблем из-за упомянутой мною выше проблемы "различий" в уровнях доменов ?
3) Рационально ли прогонять такой запрос по всей БД сразу или сделать всё в несколько "заходов" ?
Заранее благодарю за ответ.
Отредактированно GliX (22.12.2009 18:47:41)
Неактивен
UPDATE `имя_таблицы` SET `имя_поля` = 'zzz.ru' where 'имя_поля'= 'xxx.yyy.ru'
на вопросы 1, 2 и 2 ответов я тебе дать не смогу
Неактивен
kiligin написал:
UPDATE `имя_таблицы` SET `имя_поля` = 'zzz.ru' where 'имя_поля'= 'xxx.yyy.ru'
на вопросы 1, 2 и 2 ответов я тебе дать не смогу
Что-то смысла вашего запроса я не понял. У меня в полях хранятся огромные тексты сообщений, в которых содержатся упоминания старого домена, для чего Вы мне даёте запрос, которые заменит полностью все поля содержащие конкретный определённый текст, на другой ? Я спрашиваю каким запросом заменяется определённый текст конкретно в самих сообщениях (содержимом полей) без повреждения близлежащего текста.
Неактивен
Не надо отвечать на мои вопросы, хотя бы прокомментируйте правильность составления запроса, написанного в 1-ом посте темы
Неактивен
Попробуйте выполнить?
Запрос правильный, возможно, проще будет делать через дамп, т.к. всё равно
нужно будет исправлять больше, чем в одном месте. Ну то есть что-то типа
mysqldump dbname | sed 's/oldhost/newhost/' | mysql newdbname
Неактивен
paulus
Выполнить не сложно, вот только проблем с поднятием из бекапа (учитывая специфику базы - торрент-трекер) будет немного больше
Спасибо.
Неактивен