ฐานข้อมูลการส่งออก phpMyAdmin

ฉันใช้ Mamp 3.4 ฉันมีฐานข้อมูลขนาดเล็กที่มี 3 ตาราง เมื่อฉันอัปโหลดไฟล์ฐานข้อมูลไปยังเซิร์ฟเวอร์ ฉันมีข้อผิดพลาด: #1115 - ชุดอักขระที่ไม่รู้จัก: 'utf8mb4'

ฉันกลับไปที่ MAMP แล้วตรวจสอบ: Operations > Collation > utf8_unicode_ci ฉันมีสิ่งนั้นในแต่ละตารางและในฐานข้อมูลทั่วไป

ในการส่งออก ฉันเลือกฐานข้อมูล > ส่งออก > กำหนดเอง > บันทึกเอาต์พุตลงในไฟล์ ในส่วนที่เหลือฉันจะปล่อยให้เป็นค่าเริ่มต้น

ปัญหาอยู่ที่ไหน? นั่น mb4 คืออะไร? utf8_unicode_ci ถูกต้องหรือเปล่า? จะส่งออกจาก MAMP และนำเข้าไปยังเซิร์ฟเวอร์ของฉันได้อย่างไร


person Nrc    schedule 07.10.2015    source แหล่งที่มา
comment
คุณสามารถแก้ไขไฟล์ดัมพ์และเปลี่ยนชุดอักขระด้วยตนเองได้หรือไม่   -  person user2182349    schedule 07.10.2015
comment
ผู้ใช้ 2182349: ใน Mamp เมื่อฉันส่งออก ฉันมีตัวเลือกด่วน พวกเขาให้ตัวเลือกรหัสแก่ฉัน ฉันเห็นที่นั่น ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; นั่นคือสิ่งที่คุณหมายถึง?   -  person Nrc    schedule 07.10.2015
comment
ค้นหาไฟล์ดัมพ์สำหรับ utf8mb4   -  person user2182349    schedule 07.10.2015
comment
ต่อคืออะไร ของไฟล์สำรองเป็น .sql หรืออย่างอื่น   -  person Zafar Malik    schedule 07.10.2015
comment
utf8mb4. ฉันลองถามดูก่อน ไม่พบ utf8mb4   -  person Nrc    schedule 07.10.2015
comment
Zafar: ชื่อของไฟล์ที่ฉันส่งออกคือ myDatabase.sql   -  person Nrc    schedule 07.10.2015


คำตอบ (1)


มาทำความเข้าใจกันก่อน: ชุดอักขระไม่เหมือนกับการจัดเรียง แนวคิดทั้งสองนี้ได้รับการถ่ายทอดอย่างใกล้ชิดเท่านั้น

ชุดอักขระจะบอกโปรแกรมที่ประมวลผลข้อความว่าจะตีความสตรีมไบต์ที่ประกอบเป็นข้อความอย่างไรและอักขระใดที่จะแสดงบนหน้าจอ

การจัดเรียงจะบอกโปรแกรมที่ประมวลผลข้อความถึงวิธีการเรียงลำดับอักขระเพื่อการเปรียบเทียบและการเรียงลำดับ ดังนั้น หากคุณดำเนินการสั่งซื้อโดยใช้ฟิลด์ข้อความใน RDBMS RDBMS จะสามารถคำนวณลำดับของเรคคอร์ดโดยใช้การจัดเรียงได้

utf8mb4 เป็นชุดอักขระที่ MySql ใช้ การใช้งาน utf8 ของ MySql สามารถแสดงอักขระได้สูงสุด 3 ไบต์ ในขณะที่ utf8mb4 สามารถแสดงอักขระได้สูงสุด 4 ไบต์ มาตรฐาน utf8 ใช้คำจำกัดความสูงสุด 4 ไบต์ (utf8, wikipedia) พูดอย่างเคร่งครัด , utf8mb4 คือการใช้งาน utf8 ที่แท้จริงใน mysql

อย่างไรก็ตาม utf8mb4 เพิ่งถูกเพิ่มเข้ามาเมื่อไม่นานมานี้ (v5.5.3) ดังนั้นการมีอยู่ของมันจึงยังไม่เป็นที่รู้จักอย่างกว้างขวางในชุมชน mysql (MySql utf8mb4)

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

การจัดเรียงควรตรงกับการเข้ารหัส ดังนั้นหากคุณมีชุดอักขระ utf8mb4 ให้ใช้การจัดเรียง utf8mb4 ด้วยเช่นกัน คุณต้องแปลงข้อมูลของคุณเป็นชุดอักขระที่ระบบเป้าหมายของคุณรองรับ และคุณต้องจัดแนวการจัดเรียงให้สอดคล้องกับการเข้ารหัสของคุณ

person Shadow    schedule 07.10.2015
comment
ฉันไม่เข้าใจ คุณบอกว่าถ้าคุณมีชุดอักขระ utf8mb4 ฉันจะตรวจสอบได้อย่างไร? ฉันสามารถเปลี่ยน utf8mb4 เป็น utf8 ได้หรือไม่ ที่ไหน? ยังไง? - person Nrc; 07.10.2015
comment
คำสั่ง show character set จะแสดงรายการชุดอักขระที่เซิร์ฟเวอร์ mysql ของคุณรองรับ การเปลี่ยนแปลงคือการแปลงข้อมูลของคุณ มีเครื่องมือมากมายที่สามารถทำได้ - person Shadow; 07.10.2015