Làm cách nào để thay thế tên miền trong cơ sở dữ liệu Wordpress?


12

Tôi có một cơ sở dữ liệu Wordpress được cài đặt trong môi trường phát triển ... do đó, tất cả các tham chiếu đến trang web đều có một địa chỉ IP cố định (giả sử 192.168.16.2). Bây giờ, tôi phải di chuyển cơ sở dữ liệu đó sang bản cài đặt Wordpress mới trên máy chủ lưu trữ. Vấn đề là kết xuất SQL chứa rất nhiều tham chiếu đến địa chỉ IP và tôi phải thay thế nó bằng: my_domain.com.

Tôi có thể sử dụng sedhoặc một số lệnh khác để thay đổi lệnh đó từ dòng lệnh, vấn đề là có rất nhiều dữ liệu cấu hình sử dụng JSON. Vậy thì sao? Như bạn đã biết, mảng JSON sử dụng những thứ như: s:4:để biết một phần tử có bao nhiêu ký tự, và do đó, nếu tôi chỉ thay thế IP bằng tên miền, các tệp cấu hình sẽ bị hỏng.

Tôi đã sử dụng một ứng dụng cho Windows vài năm trước cho phép thay đổi giá trị trong cơ sở dữ liệu và chăm sóc các mảng JSON. Thật không may, tôi đã quên tên của ứng dụng ... vì vậy câu hỏi là: bạn có biết ứng dụng nào cho phép tôi làm những gì tôi muốn không?


1
Đây không phải là một câu trả lời hoàn chỉnh, nhưng có thể giúp bạn tìm kiếm một: dữ liệu bạn đang xem không được định dạng JSON. JSON không (thông thường) lưu trữ các loại giá trị và độ dài như thế. Những gì bạn đang xem là dữ liệu SERIALIZED. Một tìm kiếm google cho "mysql thay thế nối tiếp" mang lại trang này, có thể giúp: davidcoveney.com/ từ
MathSmath

Này, bình luận của bạn là câu trả lời duy nhất hữu ích cho tôi ... chuyển nó sang một câu trả lời để đánh dấu nó là chính xác. Cảm ơn!
Cristian

Vui vì nó đã giúp! Tôi đã đăng nó như một câu trả lời.
MathSmath

Câu trả lời:


7

Dữ liệu bạn đang xem không được định dạng JSON. JSON không (thông thường) lưu trữ các loại giá trị và độ dài như thế. Những gì bạn đang xem là dữ liệu SERIALIZED. Một tìm kiếm google cho "mysql thay thế nối tiếp" mang lại trang này, có thể giúp: http://davidcoveney.com/mysql-database-search-replace-with-serialized-php/


Cảm ơn bạn ... Tôi đã làm việc như nhà phát triển PHP trong 2 năm. Tôi không thể tin rằng tôi đã quên sự khác biệt giữa thứ gì đó được tuần tự hóa và chuỗi JSON.
Cristian

8

Codex có hướng dẫn tốt - Thay đổi URL trang web .

Về cơ bản có một số nơi có URL quan trọng hoặc không quá nhiều (tôi có thể thiếu một số):

  • homesiteurlcác tùy chọn kiểm soát nơi WP nghĩ rằng trang web;
  • đăng GUID, chúng trông giống như các liên kết nhưng thực sự chúng không - chỉ các định danh. Tôi không hoàn toàn chắc chắn rằng chúng không liên quan, nhưng tôi đã thay đổi URL trên ngăn xếp thử nghiệm rất nhiều và không bao giờ bận tâm cập nhật những thứ này.
  • liên kết trong các cơ quan bài;
  • có thể liên kết trong cài đặt plugin.

Có một vài bước. Sau khi bạn mv olddir.com newdir.comcần cấu hình lại máy chủ web của mình, hãy khởi động lại máy chủ web. Thực hiện theo các hướng dẫn về codex tại đây và sau đó bạn sẽ có thể đăng nhập với tư cách quản trị viên. Điều đó sẽ giúp bạn bắt đầu :-)
PJ Brunet

6

Như Rarst đã nói ở trên, chỉ có hai cài đặt trong cơ sở dữ liệu CẦN thay đổi. Sau khi nhập cơ sở dữ liệu, tôi đăng nhập vào PHPMyAdmin và chỉnh sửa cơ sở dữ liệu trực tiếp.

Tôi luôn sử dụng máy chủ phát triển trên PC để nhập dữ liệu và chúng có URL được đính kèm với Bài đăng dọc theo dòng http: // localhost / testsite / post-name / và nó không bao giờ gây ra sự cố.

Tôi đã từng sử dụng một tìm kiếm SQL và thay thế cho đến khi tôi nhận ra nó không thành vấn đề. Tôi đã di chuyển một vài trang web từ tên miền này sang tên miền khác và trong đó tôi có URL tuyệt đối trong nội dung Tôi sẽ sử dụng tùy chọn tìm kiếm và thay thế SQL.

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

David


Có một số plugin, như ContactForm7, cũng lưu tên miền bên trong một chuỗi nối tiếp, cùng với các biến cấu hình khác. Khi bạn sửa đổi một chuỗi nối tiếp, nó có thể bị hỏng nếu độ dài của nó thay đổi, vì vậy, trên thực tế, đôi khi, có nhiều thứ phải thay đổi hơn chỉ là hai cài đặt.
Cristian


3

Bạn có thể đặt các giá trị này với các hằng số trong wp-config.php. Sau này, bạn có thể, khi bạn muốn, thay đổi các mục trong cơ sở dữ liệu thông qua Trình quản trị plugin. Viết cái này vào wp-config.phpvà các giá trị trong DB không liên quan:

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


2

Các truy vấn SQL đơn giản - không yêu cầu REPLACE phức tạp:

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';

Sử dụng những người có PHPMyAdmin hoặc bất kỳ cách nào khác mà bạn muốn truy cập cơ sở dữ liệu.


2

Hãy chắc chắn rằng bạn đã chọn cơ sở dữ liệu mới, sau đó chạy một số cập nhật sql và các lệnh thay thế trên các bảng đáng chú ý, wp_options, wp_posts, wp_postmeta.

Sử dụng mã như dưới đây và trao đổi trong các URL cũ và mới của bạn, không có dấu gạch chéo. Ngoài ra nếu cần thiết thay đổi các giá trị tiền tố bảng khi áp dụng (ví dụ 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

Đây là một câu hỏi rất cũ, nhưng vì tôi đã gặp nó trong khi tìm kiếm một cái gì đó khác, tôi nghĩ rằng tôi sẽ thêm nó để tham khảo trong tương lai.

Tôi nghĩ rằng cách đơn giản nhất, đầy đủ nhất để làm điều này là sử dụng searchreplacesb2.php. Nó có thể được tìm thấy ở đây: http://interconnectit.com/products/search-and-replace-for-wordpress-database/ cùng với lời giải thích về việc sử dụng nó.

Nó chắc chắn đã tiết kiệm cho tôi rất nhiều thời gian với việc chuyển từ môi trường dev sang môi trường sống trên các trang web wordpress của tôi.

Chỉ cần chắc chắn rằng bạn xóa nó khỏi một máy chủ công cộng sau khi bạn đã hoàn tất!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.