Khởi chạy lại nâng cấp cơ sở dữ liệu 4.2 utf8mb4


14

Tôi đã cập nhật WP lên 4.2 khi nó đang ở trên một máy chủ cũ, không phù hợp với yêu cầu nâng cấp utf8mb4 .

Tôi đã chuyển sang một máy chủ khác phù hợp với các yêu cầu này, nhưng WP sẽ không khởi động nâng cấp cơ sở dữ liệu này nữa: /wp-admin/upTHER.php nói Your WordPress database is already up-to-date. Tôi đã cố gắng đặt wp_postbảng của mình thành utf8mb4 theo cách thủ công nhưng tất cả các ký tự đặc biệt của tôi đã trở thành Tiếng .

Bất kỳ cách nào để buộc khởi chạy maybe_convert_table_to_utf8mb4trong một bản nâng cấp đơn giản, mà không mất tất cả các ký tự đặc biệt của tôi?

Cảm ơn!

Câu trả lời:


5

Tôi nghĩ rằng câu trả lời cho câu hỏi của bạn ngay bây giờ là "Không".

Không có cách nào dễ dàng để kích hoạt maybe_convert_table_to_utf8mb4trên các trang web khi chúng đã được nâng cấp ngoài WP 4.3 trên máy chủ không đáp ứng các yêu cầu được nêu trong bài đăng này:

https://make.wordpress.org/core/2015/04/02/the-utf8mb4-upTHER/

Lưu ý rằng, dựa trên việc xem mã nguồn WP, có vẻ như họ đã chuyển mã này từ trình tự cập nhật của 4.2 sang 4.3 (nó không còn xuất hiện trong 4.2, hiện không có bản nâng cấp nào cả), có thể hy vọng sẽ có thêm người dùng trên máy bay.

Vì vậy, đó là câu trả lời của bạn và nó rất tệ nhưng chính xác hơn những câu khác _ (ツ) _ /

Chúng tôi hiện đang làm việc để tạo một tập lệnh đơn giản cho phép bạn kích hoạt bản chất của chuỗi nâng cấp dựa trên móc hành động. Nếu chúng tôi có thể làm cho nó ổn định và hoạt động, chúng tôi sẽ cố gắng quay lại và chia sẻ nó ở đây để người khác sử dụng.

Kế hoạch cơ bản của chúng tôi là trích xuất phần db thực tế của upgrade_430(), tách nó khỏi hệ thống cập nhật db và kích hoạt nó theo cách thủ công.

EDIT: GIẢI PHÁP DƯỚI ĐÂY

Mặc dù không có cách nào dễ dàng để kích hoạt tập lệnh, đây là một cách giải quyết được mã hóa bằng tay, dựa trên upgrade_430()nhưng được thiết kế dưới dạng thả vào.

https://gist.github.com/carlalexander/4106cfaaf405cec454ba195631bcb6bc

Bạn có thể đặt cái này vào một plugin, hoặc chỉ cần dán nó vào hàm.php. Dù bằng cách nào thì nó cũng phải là TẠM THỜI.

Nó được thiết lập để kích hoạt tự động khi bạn truy cập https://yoursite.com/?update-utf8bm4=1

Điều này đảm bảo rằng nó chỉ chạy một lần duy nhất và bạn có thể chọn khi nào (đối với cơ sở dữ liệu lớn có thể mất một lúc và bạn không muốn có ai chỉnh sửa bài đăng trong khi nó đang diễn ra).

Nếu bạn không muốn có trình kích hoạt GET, chỉ cần loại bỏ add_actionphần và if (!isset($_GET['update-utf8bm4']))phần.

Một lần nữa: XÓA BỎ NÀY KHI HOÀN THÀNH, bạn không muốn để lại một trình kích hoạt GET như thế này nằm xung quanh :)


2

Tất nhiên, nếu không cần phải nói, hãy tạo bản sao lưu cơ sở dữ liệu trước khi thử bất cứ điều gì, nhưng bạn sẽ làm việc với phiên bản gốc của cơ sở dữ liệu. Tôi sẽ thử hai điều: sửa chữa và bảo trì cơ sở dữ liệu WordPress và các bảng tối ưu hóa của phpMyAdmin:

Điều này xuất phát từ trang này, nơi có rất nhiều thông tin WP knowledridease , nhưng bạn bắt đầu bằng cách thêm dòng này vào wp-config.php của trang web của bạn:

define('WP_ALLOW_REPAIR', true);

sau đó truy cập http://yoursite.com/wp-admin/maint/repair.php

Bạn sẽ thấy một trang có hai tùy chọn: 'Sửa chữa cơ sở dữ liệu' và 'Sửa chữa và tối ưu hóa cơ sở dữ liệu.'

Clickon 'Sửa chữa và tối ưu hóa cơ sở dữ liệu' và cho kịch bản thời gian chạy. Khi họ đã chạy thành công, bạn sẽ nhận được thông báo cập nhật cho bạn biết trạng thái của các bảng khác nhau.

Ngay sau khi nó chạy, rất quan trọng , hãy xóa dòng wp_allow_V ngoặc mà bạn vừa thêm vào wp-config.php, xóa nó khỏi tệp wp-config.php.

Nếu điều đó không hiệu quả, bạn có thể thử tối ưu hóa bảng của phpMyAdmin, nhưng nếu WordPress không giúp được thì điều đó cũng không thể. Tôi sẽ thử nó trên cùng một phiên bản cơ sở dữ liệu mà bạn đã chạy lần sửa chữa cuối cùng.

Đi vào phpMyAdmin, chọn cơ sở dữ liệu của bạn, cuộn xuống cuối trang, kiểm tra 'Kiểm tra tất cả' để chọn tất cả các bảng trong cơ sở dữ liệu, sau đó chọn "Tối ưu hóa bảng" từ menu chọn bên cạnh. Đó là nó, nó sẽ bắt đầu tự động.

Dưới đây là chi tiết và ảnh chụp màn hình: WPMUDev

Nếu hai bước đó không hoạt động đơn lẻ hoặc cùng nhau, bạn có thể thử sử dụng một bản sao khác của cơ sở dữ liệu sao lưu của mình để chạy chúng theo thứ tự ngược lại ... Chúc may mắn!


1
Có 'Sửa chữa và Tối ưu hóa Cơ sở dữ liệu.' khởi chạy lại maybe_convert_table_to_utf8mb4(giống như bất kỳ bản cập nhật WP nào)? Bạn đã không đề cập đến điều đó trong câu trả lời;)
Joan

Xin chào Joan, xin lỗi vì đã giám sát tôi không thấy bất kỳ đề cập cụ thể nào về nó trong các ghi chú, không, nhưng sẽ đoán rằng nó sẽ làm được nếu nó có thể, miễn là bạn đang chạy tối ưu hóa trong WordPress 4.2+. Từ ghi chú cốt lõi: [ make.wordpress.org/core/tag/wpdb/]
Vanessa King

Có tất cả các bảng UTF8 và chạy sửa chữa và tối ưu hóa. Không chuyển đổi chúng thành utf8mb4. Ngoài ra các bảng không phải MyIsam mà là InnoDB và utf8mb4 không được sửa chữa hoặc tối ưu hóa.
rhand

Vâng, đây không phải là một câu trả lời cho câu hỏi xin lỗi.
jerclarke

0

Bạn đã thử thay đổi bảng cơ sở dữ liệu Collation chưa? Vui lòng thử điều này:

Đăng nhập vào phpmyadmin> chọn cơ sở dữ liệu của bạn> Thao tác> bây giờ thay đổi Collation từ trình đơn thả xuống thành "utf8mb4_unicode_ci" hoặc thay đổi thành những gì đã được sử dụng trên máy chủ cũ của bạn.

Tôi hy vọng nó sẽ làm việc cho bạn.

xem ảnh chụp màn hình: http://prntscr.com/8ip1ro/direct

Hãy nhớ rằng: Nếu bạn xuất tệp sql từ máy chủ cũ sang máy tính của bạn và mở nó bằng bất kỳ trình soạn thảo văn bản nào ... và tùy chỉnh và lưu .. thì vui lòng kiểm tra khi bạn lưu tệp sql Trình soạn thảo văn bản "Mã hóa" là Utf-8 .. xem ảnh chụp màn hình của tôi: http://prntscr.com/8ip2nr/direct

Cảm ơn


Đây là những gì tôi đã thử (quá) như thể tôi đang khởi chạy chức năng, kết quả tương tự (ở mọi nơi). Tìm cách để dễ dàng khởi chạy lại chức năng WP
Joan
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.