Как заменить доменное имя в базе данных Wordpress?


У меня есть база данных Wordpress, которая была установлена в среде разработки... таким образом, все ссылки на сам сайт имеют фиксированный IP-адрес (скажем, 192.168.16.2). Теперь мне нужно перенести эту базу данных на новую установку Wordpress на хостинге. Проблема в том, что дамп SQL содержит много ссылок на IP-адрес, и я должен заменить его на: my_domain.com .

Я мог бы использовать sed или какую-либо другую команду, чтобы изменить это из командной строки, проблема в том, что существует множество конфигурационных данных, которые используют JSON. Ну и что? Ну, как вы знаете, массивы JSON используют такие вещи, как: s:4:, чтобы узнать, сколько символов имеет элемент, и, таким образом, если я просто заменю IP-адрес доменным именем, файлы конфигурации будут повреждены.

Несколько лет назад я использовал приложение для Windows, которое позволяет изменять значения в базе данных и заботится о массивах JSON. К сожалению, я забыл название приложения... так что вопрос в следующем: знаете ли вы какое-нибудь приложение это позволяет мне делать то, что я хочу?

Author: Cristian, 2010-12-21

10 answers

Данные, которые вы просматриваете, не отформатированы в формате JSON. JSON (обычно) не хранит такие типы значений и длины. То, на что вы смотрите, - это СЕРИАЛИЗОВАННЫЕ данные. Поиск в Google по запросу "сериализованная замена mysql" дает эту страницу, которая может помочь: http://davidcoveney.com/mysql-database-search-replace-with-serialized-php/

 7
Author: MathSmath, 2010-12-22 20:16:06

В Кодексе есть достойное руководство - Изменение URL-адреса сайта.

В основном есть несколько мест, где URL имеет значение или не так много (возможно, я чего-то не хватает):

  • home и siteurl параметры, определяющие, где, по мнению WP, находится сайт;
  • размещенные идентификаторы GUID, они выглядят как ссылки, но на самом деле они не являются только идентификаторами. Я не совсем уверен, что они не имеют отношения к делу, но у меня часто менялись URL-адреса в тестовом стеке, и я никогда не утруждал себя их обновлением.
  • ссылки в посте тела;
  • возможно, ссылки в настройках плагина.
 8
Author: Rarst, 2019-09-28 14:41:19

Как уже было сказано выше, в базе данных есть только два параметра, которые НЕОБХОДИМО изменить. После импорта базы данных я вхожу в phpMyAdmin и редактирую базу данных напрямую.

Я все время использую сервер разработки на своем компьютере для импорта потоков данных, и у них есть URL-адрес, прикрепленный к сообщениям в соответствии с http://localhost/testsite/post-name / и это никогда не вызывало проблем.

Раньше я использовал SQL-поиск и замену, пока не понял, что это не имеет значения. Я мигрировал несколько сайтов из одного домена в другой, и там, где у меня были абсолютные URL-адреса в содержимом, я буду использовать опцию поиска и замены SQL.

update wp_posts set post_content = replace(post_content,'http://www.olddomain/','http://www.newdomain/');

Дэвид

 6
Author: David Law, 2010-12-23 01:53:19

Это удивительный ресурс, который я заложил в закладки, к которому я возвращаюсь снова и снова http://www.onextrapixel.com/2010/01/30/13-useful-wordpress-sql-queries-you-wish-you-knew-earlier/

Они заявляют

UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';
 5
Author: Tom, 2010-12-21 23:51:47

Вы можете задать эти значения с помощью констант в wp-config.php. После этого вы можете, когда захотите, изменить записи в базе данных с помощью администратора плагина. Запишите это в wp-config.php, и значения в БД не имеют значения:

define('WP_HOME', 'http://example.com/to-wordpress');
define('WP_SITEURL', 'http://example.com/to-blog');
 3
Author: bueltge, 2014-10-19 04:04:10

Взгляните на мой ответ на этот вопрос:

Он решает ваши проблемы с очисткой данных и может быть настроен для конкретных потребностей в переносе данных с помощью крючков using.

Надеюсь, это поможет.

 2
Author: MikeSchinkel, 2017-04-13 12:37:54

Простые SQL-запросы - никаких сложных замен не требуется:

update wp_options set option_value = 'http://mynewdomain.com' where option_name = 'siteurl';

update wp_options set option_value = 'http://mynewdomain.com' where option_name = 'home';

Используйте их с помощью phpMyAdmin или любым другим способом, который вы предпочитаете для доступа к базе данных.

 2
Author: Mark, 2014-09-11 11:54:12

Убедитесь, что выбрана новая база данных, затем выполните некоторые обновления sql и команды замены в таблицах, в частности, wp_options, wp_posts, wp_postmeta.

Используйте код, как показано ниже, и меняйте местами старые и новые URL-адреса, без завершающих косых черт. Также при необходимости измените значения префикса таблицы, где это применимо (т. е. wp_)

UPDATE wp_options SET option_value = replace(option_value, 'http_www.oldurl', 'http_www.newurl') WHERE option_name = 'home' OR option_name = 'siteurl';    
UPDATE wp_posts SET guid = replace(guid, 'http_www.oldurl','http_www.newurl');    
UPDATE wp_posts SET post_content = replace(post_content, 'http_www.oldurl', 'http_www.newurl');    
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http_www.oldurl','http_www.newurl');
 2
Author: user129645, 2017-10-15 00:31:52

Это очень старый вопрос, но так как я наткнулся на него, когда искал что-то еще, я подумал, что добавлю это для дальнейшего использования.

Я думаю, что самый простой и полный способ сделать это - использовать searchreplacedb2.php . Его можно найти здесь: http://interconnectit.com/products/search-and-replace-for-wordpress-databases / вместе с объяснением его использования.

Это определенно имеет я сэкономил много времени, перейдя из среды разработки в живую среду на моих сайтах WordPress.

Просто убедитесь, что вы удалили его с общедоступного сервера после того, как закончите!

 1
Author: MatthewLee, 2013-04-19 20:02:14

Я вижу, вы хотите перенести свой сайт WordPress из среды разработки на новый сервер или производственный сервер.

Недавно я перенес свой сайт на рабочий сервер и столкнулся с такой же ситуацией. Мне нужно обновить URL-адрес сайта, потому что WordPress сохранил URL-адрес сайта в базе данных.

Я нашел хороший запрос MySQL, используя который я могу легко изменить URL-адрес непосредственно из базы данных, например.

SET @search := "http://olddomain.com";
SET @replace := "http://newdomain.com";

UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "siteurl";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "home";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "product_list_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "shopping_cart_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "checkout_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "widget_text";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "headerImageLogo";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "cunjo_plugin_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "wpsr_socialbt_data";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "issuem";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "_transient_dgxdonate_t70pbg1htu_1396322372";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "dgx_donate_log";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "headerBackgroundImage";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "transact_url";
UPDATE `wp_postmeta` SET `meta_value`=REPLACE(meta_value, @search, @replace);
UPDATE `wp_usermeta` SET `meta_value`=REPLACE(meta_value, @search, @replace);
UPDATE `wp_posts` SET `guid`=REPLACE(guid, @search, @replace);
UPDATE `wp_posts` SET `post_content`=REPLACE(post_content, @search, @replace);

Вам просто нужно заменить URL-адрес вашего сайта со старого доменного имени на новое домен затем выполняет запрос на MySQL с помощью PHPMYADMIN.

Для получения дополнительной информации вы можете прочитать этот Учебник.

Https://tryvary.com/wordpress-change-url-in-database-using-mysql-query/

 1
Author: Renish Khunt, 2020-03-27 05:35:07