Помогите с запросом, который изменяет значения прямо в БД - PullRequest
0 голосов
/ 09 июня 2011

Я недавно мигрировал домены и в своей базе данных я сохранил полные пути, содержащие старый домен, который теперь сломался:)

Что мне нужно сделать, это изменить значения в таблице базы данных с

http://www.olddomain.com/img/some/path

до

http://www.newdomain/same/dir/structure/as/old/domain

Единственное предостережение заключается в том, что имена фотографий в конце URL-адреса должны быть сохранены.По сути, мне нужно просто изменить имя хоста.

Возможно ли это сделать?Если так, то как?:)

Ответы [ 2 ]

1 голос
/ 09 июня 2011

С базой данных MySQL сделайте это в командной строке:

1 - Поместите полную БД в файл:

mysqldump -uYOURUSERNAME -pYOURPASSWORD YOURDBNAME > YOURDBNAME.sql

2 - Замените olddomain.com на newdomain.com впредыдущий файл БД:

sed -i 's/olddomain.com/newdomain.com/g' YOURDBNAME.sql

3 - Удалить все таблицы в исходной базе данных (убедитесь, что у вас есть резервная копия) и обновить базу данных с замененным доменом во всех строках всех таблиц, где это применимо:

mysql -uYOURUSERNAME -pYOURPASSWORD YOURDBNAME < YOURDBNAME.sql

Это гарантированно работает.Я использовал это для обновления доменов в базах данных Magento (300+ таблиц) несколько раз.

FYI, sed - это инструмент командной строки linux / unix для "фильтрации и преобразования текста",Я не знаю, есть ли версия для Windows.

PS - Если вам действительно нужно добавить косую черту (/) в домен (например, если вы заменяете www.example.com/sitedir на www.example.com), вы должны избегать косых черт внутри строки sed, т.е. вместо использования /, используйте \ /.Для этого примера вы должны сделать:

sed -i 's/www.example.com\/sitedir/www.example.com/g' YOURDBNAME.sql
1 голос
/ 09 июня 2011

Попробуйте это:

UPDATE table SET column = REPLACE(column,"www.olddomain.com","www.newdomain.com");

ВСЕГДА убедитесь, что вы делаете резервную копию своей базы данных перед выполнением запроса, который обновляет много записей (как это будет).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...