ฉันมีเว็บไซต์ WordPress บนเซิร์ฟเวอร์WAMPในพื้นที่ของฉัน แต่เมื่อฉันอัปโหลดฐานข้อมูลไปยังเซิร์ฟเวอร์สดฉันได้รับข้อผิดพลาด
#1273 – Unknown collation: ‘utf8mb4_unicode_520_ci’
ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม!
ฉันมีเว็บไซต์ WordPress บนเซิร์ฟเวอร์WAMPในพื้นที่ของฉัน แต่เมื่อฉันอัปโหลดฐานข้อมูลไปยังเซิร์ฟเวอร์สดฉันได้รับข้อผิดพลาด
#1273 – Unknown collation: ‘utf8mb4_unicode_520_ci’
ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม!
คำตอบ:
คุณสามารถแก้ปัญหานี้ได้โดยการค้นหา
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
ใน.sql
ไฟล์ของคุณและสลับกับ
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4'
ฉันได้แทนที่utf8mb4_unicode_520_ci
ด้วยutf8mb4_unicode_ci
และมันทำงานตามคำตอบของ Sabba
ฉันเชื่อว่าข้อผิดพลาดนี้เกิดขึ้นเนื่องจากเซิร์ฟเวอร์ในพื้นที่และเซิร์ฟเวอร์ที่ใช้งานจริงกำลังใช้งาน MySQL เวอร์ชันต่างๆ เพื่อแก้ปัญหานี้:
utf8mb4_unicode_520_ci
ด้วยutf8mb4_unicode_ci
หวังว่าจะช่วย
utf8mb4_unicode_520_ci
มีมากรองรับ UTF-8 ดีกว่าutf8mb4_unicode_ci
! Sauce: mysql.rjweb.org/doc.php/charcoll#best_practiceด้วยการอธิบายที่ชัดเจนว่า 520_ci เหนือกว่าที่นี่: mysql.rjweb.org/utf8_collations.html
ในกรณีของฉันมันกลับกลายเป็นของฉัน
เซิร์ฟเวอร์ใหม่ที่กำลังวิ่งMySQL 5.5
, เซิร์ฟเวอร์เก่ากำลังวิ่ง
ดังนั้นฉันได้รับข้อผิดพลาดนี้เมื่อพยายามนำเข้าไฟล์ที่ฉันส่งออกจากเซิร์ฟเวอร์เก่าของฉันMySQL 5.6
.sql
MySQL 5.5 ไม่รองรับutf8mb4_unicode_520_ci
แต่
MySQL 5.6 ไม่รองรับ
การอัปเดตเป็นMySQL 5.6
บนเซิร์ฟเวอร์ใหม่แก้ไขการเปรียบเทียบข้อผิดพลาด!
หากคุณต้องการเก็บ MySQL 5.5 คุณสามารถ:
- ทำสำเนาของ.sql
ไฟล์ที่ส่งออกของคุณ
- แทนที่อินสแตนซ์ของutf8mb4unicode520_ci
และutf8mb4_unicode_520_ci
... ด้วยutf8mb4_unicode_ci
- นำเข้า.sql
ไฟล์ที่อัปเดตของคุณ
เปิดไฟล์ sql ในโปรแกรมแก้ไขข้อความของคุณ
1. ค้นหา: utf8mb4_unicode_ci แทนที่: utf8_general_ci (แทนที่ทั้งหมด)
2. ค้นหา: utf8mb4_unicode_520_ci แทนที่: utf8_general_ci (แทนที่ทั้งหมด)
3. ค้นหา: utf8mb4 แทนที่: utf8 (แทนที่ทั้งหมด)
บันทึกและอัพโหลด!
เพียงลบ "520_"
utf8mb4_unicode_520_ci
→utf8mb4_unicode_ci
เปลี่ยนง่าย
sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql
sed -i '' 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql
ฉันเพิ่งเปิดไฟล์ dump.sql ใน Notepad ++ แล้วกด CTRL + H เพื่อค้นหาและแทนที่สตริง " utf8mb4_0900_ai_ci " และแทนที่ด้วย " utf8mb4_general_ci " ลิงก์แหล่งที่มาhttps://www.freakyjolly.com/resolved-when-i-faced-1273-unknown-collation-utf8mb4_0900_ai_ci-error/
ค้นหาและแทนที่:
utf8mb4_unicode_520_ci
กับ
utf8_general_ci
ในไฟล์ sql ทั้งหมด
general
และutf8
เป็นทั้งสองขั้นตอนย้อนหลัง
ไปงานเลี้ยงสาย แต่ในกรณีนี้เกิดขึ้นกับการWORDPRESS
ติดตั้ง:
#1273 - Unknown collation: 'utf8mb4_unicode_520_ci
ใน phpmyadmin ภายใต้export method
> Format-specific options
(การส่งออกที่กำหนดเอง)
ตั้งค่าให้ : MYSQL40
หากคุณจะพยายามนำเข้าตอนนี้คุณอาจได้รับข้อความแสดงข้อผิดพลาดอื่น:
1064 - You have an error in your SQL syntax; .....
นั่นเป็นเพราะTYPE
ตัวเลือกที่เก่ากว่าซึ่งมีความหมายเหมือนกันENGINE
ถูกลบใน MySQL 5.5
เปิด.sql
ไฟล์ของคุณค้นหาและแทนที่อินสแตนซ์ทั้งหมด
จากTYPE=
ถึงENGINE=
ตอนนี้การนำเข้าควรเป็นไปอย่างราบรื่น
การรับข้อผิดพลาดการเรียง # 1273 - การเรียงที่ไม่รู้จัก: 'utf8mb4_unicode_520_ci' เกิดจากความแตกต่างของรุ่น MySQL ที่คุณส่งออกและเซิร์ฟเวอร์ MySQL ของเราที่คุณนำเข้า โดยทั่วไปแล้วไลบรารี Wordpress สำหรับเวอร์ชันใหม่จะตรวจสอบเพื่อดูว่าไซต์ของคุณกำลังรัน SQL เวอร์ชันใดอยู่ หากใช้ MySQL เวอร์ชัน 5.6 ขึ้นไปจะถือว่าการใช้ Unicode Collation Algorithm (UCA) ใหม่และปรับปรุงซึ่งเรียกว่า“ utf8mb4_unicode_520_ci” นี่เป็นสิ่งที่ดีเว้นแต่คุณจะย้ายไซต์ WordPress ของคุณจาก MySQL รุ่นใหม่กว่า 5.6 ไปเป็น MySQL รุ่นเก่ากว่า 5.6
ในการแก้ไขปัญหานี้คุณจะต้องแก้ไขไฟล์ส่งออก SQL และทำการค้นหาและแทนที่โดยเปลี่ยนอินสแตนซ์ทั้งหมดของ 'utf8mb4_unicode_520_ci' เป็น 'utf8mb4_unicode_ci' หรือทำตามขั้นตอนด้านล่างหากคุณมี PHPMyAdmin:
ในกรณีของฉันฉันแทนที่utf8_general_ci
ด้วย sed เช่นนี้
sed -i 's/utf8_0900_ai_ci/utf8_general_ci/g' MY_DB.sql
sed -i 's/utf8mb4_unicode_520_ci/utf8_general_ci/g' MY_DB.sql
หลังจากนั้นฉันสามารถนำเข้าได้โดยไม่มีปัญหาใด ๆ
sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' file.sql