เปิดใช้งานการอัพเกรดฐานข้อมูล 4.2 utf8mb4 อีกครั้ง


14

ฉันปรับปรุง WP 4.2 ในขณะที่มันอยู่บนเซิร์ฟเวอร์เก่าที่ไม่ตรงกับความต้องการอัพเกรด utf8mb4

ผมย้ายไปยังเซิร์ฟเวอร์อื่นที่เหมาะสมกับความต้องการเหล่านี้ แต่ WP จะไม่เปิดฐานข้อมูลนี้อัพเกรดอีกต่อไป: Your WordPress database is already up-to-dateเข้าไปที่กล่าวว่า ฉันพยายามตั้งค่าwp_postตารางของฉันเป็น utf8mb4 ด้วยตนเอง แต่ตัวอักษรพิเศษทั้งหมดของฉันกลายเป็น“ ”

วิธีใดที่จะบังคับให้เปิดใช้งานmaybe_convert_table_to_utf8mb4การอัพเกรดอย่างง่ายโดยไม่สูญเสียตัวอักษรพิเศษทั้งหมดของฉัน

ขอบคุณ!

คำตอบ:


5

ฉันคิดว่าคำตอบสำหรับคำถามของคุณในตอนนี้คือ "ไม่"

ไม่มีวิธีที่ง่ายในการทริกเกอร์maybe_convert_table_to_utf8mb4ไซต์เมื่อมีการอัปเกรดเกินกว่า WP 4.3 บนเซิร์ฟเวอร์ที่ไม่ตรงตามข้อกำหนดที่วางไว้ในโพสต์นี้:

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

โปรดสังเกตว่าจากการดูซอร์สโค้ด WP ดูเหมือนว่าพวกเขาย้ายสิ่งนี้จากลำดับการอัพเดต 4.2 เป็น 4.3 (ไม่มีอยู่ใน 4.2 ซึ่งตอนนี้ไม่มีการอัพเกรดเลย) อาจหวังว่าจะมีผู้ใช้เพิ่มขึ้น

นั่นคือคำตอบของคุณและมันแย่ แต่มีความแม่นยำมากกว่าคนอื่น¯_ (ツ) _ / ¯

ขณะนี้เรากำลังดำเนินการสร้างสคริปต์อย่างง่ายที่ช่วยให้คุณสามารถเรียกสาระสำคัญของลำดับการอัปเดตตามเบ็ดการกระทำ หากเราสามารถทำให้มันมั่นคงและทำงานได้เราจะพยายามกลับมาแบ่งปันที่นี่เพื่อให้ผู้อื่นใช้

แผนพื้นฐานของเราคือการแยกส่วน db จริงของupgrade_430()แยกออกจากระบบการอัพเดทฐานข้อมูลและเรียกมันด้วยตนเอง

แก้ไข: การแก้ปัญหาด้านล่าง

แม้ว่าจะไม่มีวิธีที่ง่ายในการเรียกสคริปต์ แต่นี่เป็นวิธีแก้ปัญหาที่เขียนด้วยมือโดยอ้างอิงจากupgrade_430()แต่ออกแบบมาเป็นแบบดรอปอิน

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

คุณสามารถใส่มันลงในปลั๊กอินหรือเพียงแค่วางลงในฟังก์ชั่นของคุณ ไม่ว่าจะด้วยวิธีใดก็ตามควรเป็นชั่วคราว

มันตั้งค่าให้เรียกโดยอัตโนมัติเมื่อคุณเยี่ยมชม https://yoursite.com/?update-utf8bm4=1

สิ่งนี้ช่วยให้มั่นใจว่าจะทำงานได้เพียงครั้งเดียวและคุณจะได้รับเมื่อ (สำหรับฐานข้อมูลขนาดใหญ่อาจใช้เวลาสักครู่และคุณไม่ต้องการให้ใครแก้ไขโพสต์ในขณะที่เกิดขึ้น)

หากคุณไม่ต้องการให้ทริกเกอร์ GET เพียงแค่เอาadd_actionส่วนและif (!isset($_GET['update-utf8bm4']))ส่วนหนึ่งออก

อีกครั้ง: ลบออกเมื่อเสร็จสมบูรณ์คุณไม่ต้องการออกทริกเกอร์ GET แบบนี้โกหก :)


2

แน่นอนถ้าไปโดยไม่บอกให้ทำการสำรองข้อมูลของฐานข้อมูลก่อนที่จะลองทำอะไรก็ได้ แต่คุณจะทำงานกับฐานข้อมูลเวอร์ชันเดิม - ฉันจะลองสองสิ่ง: การซ่อมแซมและบำรุงรักษาฐานข้อมูล WordPress และ phpMyAdmin ของตารางเพิ่มประสิทธิภาพ:

นี่มาจากหน้านี้ซึ่งมีข้อมูลจำนวนมากWP คลังความรู้แต่คุณเริ่มต้นด้วยการเพิ่มบรรทัดนี้ในเว็บไซต์ของคุณ wp-config.php:

define('WP_ALLOW_REPAIR', true);

จากนั้นไปที่http://yoursite.com/wp-admin/maint/repair.php

คุณควรเห็นหน้าเว็บที่มีสองตัวเลือก: 'ซ่อมแซมฐานข้อมูล' และ 'ซ่อมแซมและปรับฐานข้อมูลให้เหมาะสม'

คลิกที่ 'ซ่อมแซมและเพิ่มประสิทธิภาพฐานข้อมูล' และให้เวลาสคริปต์ในการทำงาน เมื่อพวกเขาทำงานได้สำเร็จคุณจะได้รับข้อความอัปเดตแจ้งให้คุณทราบสถานะของตารางต่างๆ

ทันทีที่มันรันสำคัญมากให้ลบบรรทัด wp_allow_repair ที่คุณเพิ่งเพิ่มไปยัง wp-config.php ลบออกจากไฟล์ wp-config.php

หากไม่ได้ผลคุณสามารถลองใช้การเพิ่มประสิทธิภาพตารางของ phpMyAdmin แต่หาก WordPress ไม่ช่วยอาจไม่ได้ผลเช่นกัน ฉันจะลองใช้ฐานข้อมูลรุ่นเดียวกันกับที่คุณใช้ในการซ่อมแซมครั้งสุดท้าย

ไปที่ phpMyAdmin เลือกฐานข้อมูลเลื่อนไปที่ด้านล่างของหน้าทำเครื่องหมาย 'ตรวจสอบทั้งหมด' เพื่อเลือกตารางทั้งหมดในฐานข้อมูลจากนั้นเลือก "ปรับตาราง" จากเมนูเลือกถัดจาก แค่นี้แหละมันจะเริ่มโดยอัตโนมัติ

นี่คือรายละเอียดและภาพหน้าจอเพิ่มเติม: WPMUDev

หากทั้งสองขั้นตอนไม่ทำงาน - เพียงอย่างเดียวหรือร่วมกันคุณสามารถลองใช้อีกสำเนาหนึ่งของฐานข้อมูลสำรองเพื่อเรียกใช้ในลำดับที่กลับกัน ... ขอให้โชคดี!


1
'ซ่อมและปรับฐานข้อมูลให้เหมาะสม' หรือไม่ เรียกใช้อีกครั้งmaybe_convert_table_to_utf8mb4(เช่นเดียวกับการอัปเดต WP) คุณไม่ได้พูดถึงสิ่งนั้นในคำตอบ;)
โจน

สวัสดี Joan ขออภัยในความผิดพลาด…ฉันไม่เคยเห็นการกล่าวถึงเฉพาะในบันทึกย่อเลย แต่จะเดาได้ว่าถ้าเป็นไปได้ตราบเท่าที่คุณใช้การเพิ่มประสิทธิภาพใน WordPress 4.2+ จากบันทึกหลัก: [ make.wordpress.org/core/tag/wpdb/]
Vanessa King

มีตาราง UTF8 ทั้งหมดและเรียกใช้การซ่อมแซมและการเพิ่มประสิทธิภาพ ไม่ได้แปลงเป็น utf8mb4 ตารางที่ไม่ใช่ MyIsam แต่ InnoDB และ utf8mb4 นั้นไม่ได้รับการซ่อมแซมหรือปรับให้เหมาะสม
rhand

ใช่นี่ไม่ใช่คำตอบสำหรับคำถามที่ขอโทษ
jerclarke

0

คุณได้พยายามที่จะเปลี่ยนตารางฐานข้อมูลการเรียงหน้า? โปรดลองสิ่งนี้:

ลงชื่อเข้าใช้ phpmyadmin> เลือกฐานข้อมูลของคุณ> การดำเนินงาน> เปลี่ยน Collation จากเมนูแบบเลื่อนลงเป็น "utf8mb4_unicode_ci" หรือเปลี่ยนเป็นสิ่งที่ใช้บนเซิร์ฟเวอร์เก่าของคุณ

ฉันหวังว่ามันจะทำงานให้คุณ

ดูภาพหน้าจอ: http://prntscr.com/8ip1ro/direct

เตือนความจำ: ถ้าคุณส่งออกไฟล์ sql จากเซิร์ฟเวอร์เก่าของคุณไปยังพีซีแล้วเปิดด้วยโปรแกรมแก้ไขข้อความใด ๆ ... และปรับแต่งและบันทึก .. จากนั้นโปรดตรวจสอบเมื่อคุณบันทึกไฟล์ sql Text Editor "Encoding" คือUtf-8 .. ดูภาพหน้าจอของฉัน: http://prntscr.com/8ip2nr/direct

ขอบคุณ


นี่คือสิ่งที่ฉันพยายาม (เช่นกัน) ราวกับว่าฉันกำลังเปิดตัวฟังก์ชั่นผลลัพธ์เดียวกัน ( ทุกที่) กำลังมองหาวิธีที่จะเปิดใช้งานฟังก์ชั่น WP อีกครั้งได้อย่างง่ายดาย ...
Joan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.