Bỏ qua tới nội dung
Công cụ

SQL Tìm & Thay thế

Đổi URL website mà không làm hỏng dữ liệu đã serialize

Chạy trong trình duyệt của bạn. Không up gì cả.

Thay đổi

Đọc phần này trước khi chạy bất cứ thứ gì

WordPress lưu nhiều tùy chọn dưới dạng chuỗi PHP-serialized, và một chuỗi đã được serialize ghi lại độ dài byte của chính nó — s:19:"http://old-site.com". Một lệnh thay thế SQL thông thường làm thay đổi văn bản nhưng không đổi độ dài, nên PHP không còn unserialize được hàng dữ liệu đó nữa. Nó không báo lỗi. Giá trị chỉ âm thầm trở nên rỗng.

Những gì bạn sẽ mất: cấu hình widget, các tùy chỉnh theme, và phần lớn thiết lập plugin. Thường thì bạn không nhận ra cho đến vài ngày sau, và đến lúc đó thì bản sao lưu đáng lẽ bạn dùng để khôi phục cũng mất luôn rồi.

Đây là lý do các truy vấn bên dưới cố ý không đụng đến wp_options.

Bạn đang chuyển gì?
search-replace.sql

Hãy sao lưu cơ sở dữ liệu trước tiên. Không phải "cân nhắc sao lưu" — mà là hãy sao lưu ngay. Không có cách hoàn tác cho một lệnh UPDATE.

Về SQL Tìm & Thay thế

Một lệnh tìm-và-thay-thế SQL ngây thơ trên cơ sở dữ liệu WordPress sẽ làm hỏng mọi tùy chọn đã serialize mà nó chạm tới, vì độ dài chuỗi được lưu không còn khớp nữa. Công cụ này tạo các truy vấn an toàn và giải thích chính xác truy vấn nào thì không.

Câu hỏi thường gặp

Câu hỏi

Tôi có thể đổi URL trang WordPress bằng cách tìm và thay thế SQL không?

Không an toàn, và đây là lời khuyên tồi được chia sẻ nhiều nhất trong WordPress. Nhiều tùy chọn được lưu dưới dạng chuỗi PHP đã serialize, có ghi lại độ dài byte của chính mình. Một lệnh thay thế SQL thường thay đổi phần văn bản nhưng không thay đổi độ dài, nên PHP âm thầm thất bại khi unserialize dòng đó và giá trị đơn giản là biến mất — mang theo cả cài đặt widget, theme mod và cấu hình plugin.

Vậy tôi nên dùng gì thay thế?

WP-CLI: 'wp search-replace old new --all-tables --dry-run' trước, rồi bỏ --dry-run. Nó hiểu serialization và viết lại các tiền tố độ dài cho đúng. Nếu bạn không có quyền truy cập CLI, plugin Better Search Replace làm điều tương tự từ trang quản trị.

Tôi có nên cập nhật cột GUID không?

Không. GUID là một định danh duy nhất vĩnh viễn cho một bài viết, không phải một link, và các trình đọc feed dựa vào nó. Viết lại nó khiến mọi người theo dõi thấy mọi bài cũ như bài mới toanh. Tài liệu WordPress nói rõ ràng là đừng đổi nó.