Wordpress 데이터베이스에서 도메인 이름을 바꾸는 방법은 무엇입니까?


12

개발 환경에 설치된 Wordpress 데이터베이스가 있습니다. 따라서 사이트 자체에 대한 모든 참조에는 고정 IP 주소 (192.168.16.2)가 있습니다. 이제 호스팅에서 해당 데이터베이스를 새 Wordpress 설치로 마이그레이션해야합니다. 문제는 SQL 덤프에 IP 주소에 대한 많은 참조가 포함되어 있으며 my_domain.com으로 바꿔야한다는 것입니다.

내가 사용할 수 있습니다 sed또는 다른 명령은 명령 줄에서 문제가 JSON을 사용하여 구성 데이터를 많이 있다는 것을 있다는을 변경할 수 있습니다. 그래서 무엇? 아시다시피 JSON 배열은 다음과 같은 것을 사용 s:4:합니다. 요소에 몇 개의 문자가 있는지 알기 때문에 IP를 도메인 이름으로 바꾸면 구성 파일이 손상됩니다.

몇 년 전 Windows 용 앱을 사용하여 데이터베이스의 값을 변경하고 JSON 배열을 관리했습니다. 불행히도, 나는 앱의 이름을 잊어 버렸습니다 ... 그래서 질문은 : 내가 원하는 것을 할 수있는 앱을 알고 있습니까?


1
이것은 완전한 대답은 아니지만 하나를 검색하는 데 도움이 될 수 있습니다.보고있는 데이터가 JSON 형식이 아닙니다. JSON은 일반적으로 값 유형과 길이를 저장하지 않습니다. 당신이보고있는 것은 직렬화 된 데이터입니다. "mysql replace serialized"에 대한 Google 검색으로이 페이지가 표시됩니다. davidcoveney.com/…
MathSmath

이봐, 네 의견은 나에게 도움이 된 유일한 대답은 ... 정답으로 대답으로 옮기십시오. 감사!
Cristian

도움이되어 다행입니다! 답변으로 게시했습니다.
MathSmath

답변:


7

보고있는 데이터가 JSON 형식이 아닙니다. JSON은 일반적으로 값 유형과 길이를 저장하지 않습니다. 당신이보고있는 것은 직렬화 된 데이터입니다. "mysql replace serialized"에 대한 Google 검색으로이 페이지가 생성됩니다. http://davidcoveney.com/mysql-database-search-replace-with-serialized-php/


고맙습니다 ... 저는 2 년 동안 PHP 개발자로 일했습니다. 직렬화 된 것과 JSON 문자열의 차이점을 잊었다 고 믿을 수 없습니다.
Cristian

8

Codex에는 적절한 사이트 변경 사이트 가이드가 있습니다.

기본적으로 URL이 중요하거나 그렇지 않은 곳이 몇 군데 있습니다 (일부 누락되었을 수 있음).

  • homesiteurl옵션을 제어하는 WP는 사이트입니다 생각하는 경우;
  • GUID를 게시하면 링크처럼 보이지만 실제로는 식별자가 아닙니다. 나는 그들이 관련이 없다는 것을 절대적으로 확신하지는 않지만 테스트 스택에서 URL을 많이 변경했으며 결코 이것을 업데이트하지 않았습니다.
  • 포스트 바디의 링크;
  • 플러그인 설정의 링크 일 수 있습니다.

몇 가지 단계가 있습니다. mv olddir.com newdir.com웹 서버를 재구성 한 후 웹 서버를 다시 시작하십시오. 여기에있는 코덱 지침을 따르면 관리자로 로그인 할 수 있습니다. :-)
PJ Brunet

6

Rarst가 위에서 말했듯이 데이터베이스에는 NEEDS가 변경하는 두 가지 설정 만 있습니다. 데이터베이스를 가져온 후 PHPMyAdmin에 로그인하여 데이터베이스를 직접 편집하십시오.

나는 항상 PC에서 개발 서버를 사용하여 데이터 피드를 가져오고 http : // localhost / testsite / post-name / 라인을 따라 게시물에 URL이 첨부되어 있어 문제가 발생하지 않습니다.

나는 SQL 검색을 사용하고 중요하지 않다는 것을 알 때까지 교체했습니다. 한 도메인에서 다른 도메인으로 몇 개의 사이트를 마이그레이션했으며 콘텐츠에 절대 URL이있는 곳에서 SQL 검색 및 바꾸기 옵션을 사용합니다.

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

데이비드


ContactForm7과 같은 일부 플러그인은 다른 구성 변수와 함께 직렬화 된 문자열 내에 도메인 이름을 저장합니다. 직렬화 된 문자열을 수정하면 길이가 변경되면 문자열이 손상 될 수 있으므로 실제로 두 설정보다 변경해야 할 사항이 더있는 경우가 있습니다.
Cristian


3

에서이 값을 상수로 설정할 수 있습니다 wp-config.php. 그런 다음 원하는 경우 플러그인 관리자를 통해 데이터베이스의 항목을 변경할 수 있습니다. 에 이것을 쓰고 wp-config.phpDB의 값은 관련이 없습니다.

define('WP_HOME', 'http://example.com/to-wordpress');
define('WP_SITEURL', 'http://example.com/to-blog');


2

간단한 SQL 쿼리-복잡한 REPLACE 항목이 필요하지 않습니다.

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

새 데이터베이스를 선택했는지 확인한 다음 테이블에서 특히 wp_options, wp_posts, wp_postmeta와 같은 일부 SQL 업데이트 및 대체 명령을 실행하십시오.

아래 코드를 사용하고 슬래시없이 이전 URL과 새 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');

1

이것은 매우 오래된 질문이지만 다른 것을 찾고있는 동안이 문제를 발견했기 때문에 나중에 참조 할 수 있도록 추가 할 것이라고 생각했습니다.

가장 간단한 방법은 searchreplacedb2.php를 사용하는 것입니다. 그것은 여기에서 찾을 수 있습니다 : http://interconnectit.com/products/search-and-replace-for-wordpress-databases/를 그것의 사용에 대한 설명과 함께.

워드 프레스 사이트에서 개발 환경에서 실제 환경으로 마이그레이션하는 데 많은 시간을 절약했습니다.

완료 후 공용 서버에서 삭제하십시오!


0

WordPress 사이트를 개발 환경에서 새 서버 또는 프로덕션 서버로 옮기고 싶다고 생각합니다.

최근에 내 사이트를 프로덕션 서버로 옮겼으며 같은 상황에 처해 있습니다. WordPress가 사이트 URL을 데이터베이스에 저장했기 때문에 사이트 URL을 업데이트해야합니다.

나는 데이터베이스에서 URL을 직접 쉽게 변경할 수 있다는 것을 사용하여 좋은 MySQL 쿼리를 발견했다.

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을 기존 도메인 이름에서 새 도메인으로 바꾸고 PHPMYADMIN을 사용하여 MySQL에서 쿼리를 실행하면됩니다.

자세한 내용은 자습서를 참조하십시오.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.