Какой SQL-запрос сделать простое находят и заменяют

Каждый раз, когда я создаю новый веб-сайт, я сначала создаю сайт подготовки на субдомене как "stage.domain-name.com".

После того, как все работает правильно, я экспортирую базу данных, открываю ее в блокноте ++ и делаю нахождение/заменение для "subdomain.domain-name.com" и заменяю ее "domain-name.com"... наконец я импортирую ее в новую базу данных для живого сайта.

Мой вопрос..., какой SQL-запрос я должен был бы выполнить, если бы я просто хотел сделать, это простое находит/заменяет на всей базе данных с помощью phpmyadmin?

- CH

20
25.01.2011, 13:09
5 ответов

Таблица, где Ваш URL сохраняется, является wp_options. Необходимо сделать обновление на столбцах, которые используют URL для сайта:

UPDATE TABLE wp_options SET option_value = "new domain" WHERE option_name = "siteurl"
UPDATE TABLE wp_options SET option_value = "new domain" WHERE option_name = "home"

Я мог бы пропускать некоторое значение, но каждый раз, когда Вы делаете это находит/заменяет процесс снова, можно заметить значения и таблицы, которые должны быть обновлены и добавить их к этому сценарию.

Кодекс WordPress имеет хорошее руководство по тому, как изменить URL сайта, возможно, это еще более удобно для Вас: Изменение URL Сайта

13
19.02.2020, 21:56
  • 1
    является там не способом сделать нахождение/заменение на всей базе данных? Другими словами... Я заметил, например, что должен заменить URL в наборе различных местоположений включая библиотеку мультимедиа.... Если бы было нахождение/заменение для всей базы данных по существу для каждого поля затем, то это решило бы проблему. Спасибо за Вашу справку –  NetConstructor.com 25.01.2011, 13:28
  • 2
    Выезд, что новая ссылка я прибавил ответ. Я думаю, что это было бы способом пойти. –  Fernando Briano 25.01.2011, 13:29
  • 3
    Это не будет работать на сериализированные данные. Это могло бы полностью повредить некоторую конфигурацию темы. –  Christian Lescuyer 17.10.2017, 20:52

Лучше всего, чтобы сделать опции, сообщения, отправляют содержание и отправить meta:

UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');

UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');

UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');

Также посмотрите, что Ищущие Данные используют phpMyAdmin и MySQL | Публикация Packt. И Поиск RegEx является хорошим плагином WP, чтобы смочь искать и заменить Grep через все сообщения и страницы.

Обновление 16.06.2015: Используя инструмент, связанный в следующем предложении, намного лучше, поскольку простое находит/заменяет, поскольку выше в дампе базы данных повредит сериализированные данные. См. interconnectit.com WordPress Сериализированный Инструмент Замены Поиска PHP. Таким образом, Вы не повреждаете сериализированные данные и не должны будете выполнять RegEx на содержании сообщения, поскольку взаимосвязанный сценарий изменяет URL везде. Я использую тот инструмент все время, чтобы переместить сайты в различные домены или просто сделать глобальное изменение от http до https, чтобы вызвать SSL без плагинов и изменить все URL в содержании для предотвращения небезопасных ошибок элемента.

30
19.02.2020, 21:56
  • 1
    Никогда не изменяйте гуид - даже если, идя в новый домен. Это привыкло к исключительно идентификатору сообщение, поскольку идентификатор может измениться, если сообщения экспортируются/импортируются в новую базу данных. С одной стороны, RSS-ридеры будут использовать GUID, чтобы сказать, была ли конкретная статья прочитана или нет. Изменение гуида эффективно переиздаст все Ваши статьи. –  Taylor Dewey 16.06.2012, 20:42
  • 2
    @taylordewey сказан: "Никогда не изменяйте гуид..." Мусор. –  markratledge 17.06.2012, 21:55
  • 3
    @songdogtech для объяснения, почему это - мусор? –  shea 06.03.2013, 06:39
  • 4
    , Почему нужно было бы изменить GUID? –  kaiser 11.08.2016, 19:36
  • 5
    Это не будет работать на сериализированные данные. Это могло бы полностью повредить некоторую конфигурацию темы. Действительно используйте инструмент, такой как Межсоединение/IT. –  Christian Lescuyer 17.10.2017, 20:52

Это - большой общедоступный сценарий, который я использую, и он работает красиво с сериализированными массивами что использование WP для хранения опций. Просто удостоверьтесь, что удалили его из своего удаленного сервера, когда Вы сделаны, потому что это - ОГРОМНАЯ угроза безопасности.

https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

9
19.02.2020, 21:56
  • 1
    , который я не знаю, почему я был-1'd. Этот сценарий намного лучше, чем SQL-оператор. Обратная связь? –  lancemonotone 03.08.2011, 17:10
  • 2
    инструмент, который могут использовать люди, которые не знают sql, огорчает тех, кто пишет в sql –  Jon 23.06.2013, 21:54

Вы не должны делать этого, можно использовать относительные пути.

когда Вы связываетесь, что-то вместо subdomain.soemthing.com/image.jpg - использует /image.jpg, например,

как это Вы не столкнетесь с проблемой во-первых.

иначе для оператора обновления mysql можно использовать

update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, ‘find this string’, ‘replace found string with this string’);
3
19.02.2020, 21:56
  • 1
    Спасибо... да я сделаю в тот следующий раз. SQL-оператор делает замену находки на всей базе данных (включая все таблицы)? –  NetConstructor.com 25.01.2011, 14:03
  • 2
    Обратите внимание также, что, даже если Вы требуете использовать относительные пути, много частей Wordpress имеет тенденцию автовставлять полные пути. Действительно получить эту работу плагин как: wordpress.org/plugins/root-relative-urls очень, очень полезен –  benz001 15.09.2014, 08:03

Изменить домен Wordpress, в чем мы часто нуждаемся, может быть должно сделать сайт живым из localhost: Это - полный список запросов на обновление:

UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');
UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_links SET link_url = replace(link_url, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_links SET link_image = replace(link_image, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_usermeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');

/*UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl' OR option_name = 'widget_text' OR option_name = 'dashboard_widget_options';*/
UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com');
  • Мы должны также добавить другие таблицы, которые не являются значением по умолчанию с WP при необходимости.

ОБНОВЛЕНИЕ: Поисковая Замена версия 3.1.0 DB является удобным для пользователя, инструментом фронтенда для разработчиков, который позволяет Вам выполнять базу данных широкие действия поиска/замены, которые не повреждают PHP, сериализировала строки или объекты.

2
19.02.2020, 21:56
  • 1
    Это не будет работать на сериализированные данные. Это могло бы полностью повредить конфигурацию темы. –  Christian Lescuyer 17.10.2017, 20:50

Теги

Похожие вопросы