[MySQL] Export ฐานข้อมูล latin1 ออกมาเป็น utf8 ผ่าน command line

เคสตัวอย่าง จากที่บริษัทฮะ เรื่องมีอยู่ว่า
Database เป็น latin1 ส่วน Table เป็น utf8 ทีนี้ตอนเพิ่มข้อมูลลงไปใน Database ผ่าน PHP ไม่ได้ SET NAMES เอาไว้ ทำให้มีปัญหากับ ภาษาไทยบางตัว(เข้าใจว่าเป็นสระ หรือ อักษระบางตัว อันนี้ไม่ทันได้ดูตัวต้นฉบับซะด้วย) ซึ่งทำให้มีปัญหาเวลา query ข้อมูลขึ้นมาแสดง ... เข้าใจว่า Framework ทางฝั่ง API มี Default เป็น latin นะ

ทีนี้ล่ะครับพี่น้อง... ตามสัญชาติญาณก็ Export ออกมาผ่าน phpMyAdmin ที่เป็น utf8 ... ปรากฎว่าตัวหนังสือมันเพี้ยนครับ ลอง iso-8850-x ก็ไม่ได้ ตัวเลือกที่ให้ Export ออกมาเป็น latin1 ก็ไม่มี ...

เฮ่ยยยย!!!

นั่งค้นข้อมูลสักพักก็ได้คำตอบ นั่นก็คือ Export ผ่าน command line จ้า
ก็ประมาณนี้

mysqldump --default-character-set=latin1 -u root -p --databases [DATABASE_NAME] > [FILE].sql

จุดสำคัญมันอยู่ตรงนี้
--default-character-set=latin1
เป็นการบอกให้ MySQL รู้ว่า เห้ย! เอ็งอ่านเป็น latin1 ก่อนนะเว้ย แล้วค่อย export

ส่วนตรง [DATABASE_NAME] ก็ชื่อฐานข้อมูล
[FILE] อันนี้ก็ชื่อไฟล์ แล้วก็ให้เป็นนามสกุล .sql ซะ

เย้ เสร็จแหล่ววว





Comments