간단한 찾기 및 바꾸기를 수행 할 SQL 쿼리


19

새 웹 사이트를 만들 때마다 먼저 "stage.domain-name.com"과 같은 하위 도메인에 준비 사이트를 만듭니다.

모든 것이 올바르게 작동하면 데이터베이스를 내보내고 notepad ++에서 데이터베이스를 열고 "subdomain.domain-name.com"에 대한 찾기 / 바꾸기를 수행하고 "domain-name.com"으로 바꾸십시오 ... 마지막으로 새 데이터베이스로 가져옵니다 라이브 사이트의 데이터베이스.

내 질문은 ... phpmyadmin을 사용하여 전체 데이터베이스 에서이 간단한 찾기 / 바꾸기를 원한다면 어떤 SQL 쿼리를 실행해야합니까?

-CH


검색어에 익숙하지 않은 경우 검색 및 바꾸기 플러그인, wordpress.org/extend/plugins/search-and-replace
t31os

URL을 업데이트하기 위해 WordPress 기능을 사용하지 않는 이유는 무엇입니까? codex.wordpress.org/Moving_WordPress 모든 것을 자세히 설명합니다
Alex Older

이를위한 플러그인이 있습니다. 원하는 경우 백엔드를 편안하게 사용하고 포스트 컨텐츠 및 일부 다른 필드의 URL을 대체합니다. wordpress.org/plugins/better-search-replace
simonthesorcerer

답변:


13

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 Codex에는 사이트 URL을 변경하는 방법에 대한 유용한 가이드가 있습니다. 사이트 URL 변경


1
전체 데이터베이스에서 찾기 / 바꾸기를 할 수있는 방법이 없습니까? 다시 말해서 ... 예를 들어 미디어 라이브러리를 포함하여 여러 다른 위치에서 URL을 교체해야한다는 것을 알았습니다 .... 모든 데이터베이스에 대해 전체 데이터베이스에 대한 찾기 / 바꾸기가 있으면 모든 필드에서 해결됩니다. 문제. 도움을 주셔서 감사합니다
NetConstructor.com

답변에 추가 한 새 링크를 확인하십시오. 나는 그것이 갈 길이라고 생각합니다.
Fernando Briano

1
직렬화 된 데이터에는 작동하지 않습니다. 일부 테마 구성이 완전히 중단 될 수 있습니다.
Christian Lescuyer

28

옵션, 게시물, 게시물 내용 및 메타 게시를 수행하는 것이 가장 좋습니다.

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 Publishing. 그리고 검색 정규식은 좋은 WP 플러그인 검색하고 모든 게시물 및 페이지를 그렙로 교체 할 수있다.

2015 년 6 월 16 일 업데이트 : 데이터베이스 덤프에서 위와 같이 간단한 찾기 / 바꾸기가 직렬화 된 데이터를 손상 시키므로 다음 문장에 링크 된 도구를 사용하는 것이 훨씬 좋습니다 . disconnectit.com WordPress Serialized PHP 검색 바꾸기 도구를 참조하십시오 . 이러한 방식으로, 직렬화 된 데이터를 손상시키지 않으며 상호 연결 스크립트가 모든 곳에서 URL을 변경하므로 게시 컨텐츠에서 RegEx를 실행할 필요가 없습니다. 이 도구를 항상 사용하여 사이트를 다른 도메인으로 마이그레이션하거나 플러그인없이 SSL을 강제로 적용하고 콘텐츠의 모든 URL을 변경하여 안전하지 않은 요소 오류를 방지하기 위해 http를 https로 전체 변경합니다.


2
새 도메인으로 이동하더라도 guid를 변경하지 마십시오. 게시물을 새 데이터베이스로 내보내거나 가져 오는 경우 ID가 변경 될 수 있으므로 게시물을 고유하게 식별하는 데 사용됩니다. 우선 RSS 리더는 GUID를 사용하여 특정 기사를 읽었는지 여부를 알려줍니다. guid를 변경하면 모든 기사가 효과적으로 다시 게시됩니다.
Taylor Dewey

@taylordewey는 말했다 : "지도를 변경하지 마십시오 ..."쓰레기.
markratledge

1
@songdogtech 쓰레기 인지 설명해 주 시겠습니까?
shea

1
왜 하나는 것 GUID를 변경하려면?
카이저

1
직렬화 된 데이터에는 작동하지 않습니다. 일부 테마 구성이 완전히 중단 될 수 있습니다. 실제로 Interconnect / IT와 같은 도구를 사용하십시오.
Christian Lescuyer

9

이것은 내가 사용하는 훌륭한 드롭 인 스크립트이며 WP가 옵션을 저장하는 데 사용하는 직렬 배열과 아름답게 작동합니다. 완료되면 원격 서버에서 큰 보안 위험이 있으므로 삭제해야합니다.

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


2
내가 왜 -1을했는지 모르겠습니다. 이 스크립트는 SQL 문보다 훨씬 좋습니다. 피드백 부탁드립니다.
lancemonotone

1
SQL을 모르는 사람들이 사용할 수있는 도구는 SQL로 쓰는 사람들에게 화를 내고있다
Jon

4

이를 위해 WP-CLI를 사용 하는 것이 가장 쉽고 직렬화 된 데이터를 처리하기 때문에 WP-CLI를 사용 합니다.

wp search-replace 'http://example.dev' 'http://example.com' --skip-columns=guid

실제 데이터베이스를 조작하는 대신 변경 사항을 SQL 파일에 기록하는 옵션도 있습니다.

wp search-replace foo bar --export=database.sql


가장 강력하고 빠른 솔루션입니다. wp-cli는 하루를 다시 한 번
구합니다

3

이 작업을 수행 할 필요는 없으며 상대 경로를 사용할 수 있습니다.

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’);

고마워 ... 그래 다음에 할게 SQL 문이 전체 데이터베이스 (모든 테이블 포함)에서 대체를 찾습니까?
NetConstructor.com

@ NetConstructor.com 위에서 언급 한 SQL 문은 특정 테이블의 특정 필드에서 문자열을 대체하기위한 일반적인 MySQL 명령입니다. 작성된대로이 명령문을 실행하려고하면 작동하지 않습니다. 이 명령이 작동하려면 TABLE_NAME & FIELD_NAME을 WordPress에서 사용하는 실제 필드 및 테이블로 변경해야합니다.
Manzabar

상대 경로를 사용하려는 경우에도 워드 프레스의 많은 부분이 전체 경로를 자동 삽입하는 경향이 있습니다. 실제로 다음과 같은 플러그인을 작동 시키려면 : wordpress.org/plugins/root-relative-urls 는 매우 유용합니다
benz001

2

우리가 자주 필요로하는 워드 프레스 도메인을 변경하려면, 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로 기본값이 아닌 다른 테이블도 추가해야합니다.

업데이트 : 검색 바꾸기 DB 버전 3.1.0은 개발자를위한 사용자 친화적 인 프론트 엔드 도구로, PHP 직렬화 된 문자열 또는 객체를 손상시키지 않는 데이터베이스 전체 검색 / 바꾸기 작업을 수행 할 수 있습니다.


2
직렬화 된 데이터에는 작동하지 않습니다. 테마 구성이 완전히 중단 될 수 있습니다.
Christian Lescuyer

-1

실제로 테마의 wp_config 및 functions.php 파일에서 일부 조정 만 SQL 쿼리를 사용할 필요는 없습니다. Wordpress Codex에서이 주제를 확인하십시오. https://codex.wordpress.org/Changing_The_Site_URL


1
이것은 정확하지 않습니다. 불행히도 WordPress는 데이터베이스에 일부 URL을 텍스트로 저장합니다.
s_ha_dum
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.