คราวก่อนเขียนไว้เกี่ยวกับปัญหา mysql5 เรื่องภาษาไทย พบเจอโดยบังเอิญเนื่องจาก Host เช่าที่รับจ้างงานเค้าเปลี่ยนเป็น mysql5 แล้ว export ข้อมูลมันลงมาใส่ mysql5 บนเครื่องที่ใช้งานซึ่งเป็น mysql5 เหมือนกัน ปรากฏว่าใช้งานได้แฮะ เฮ้ยเลยลองมาดู sql ที่ export ออกมามันมี ตัวที่ระบุว่าจะ encoding อะไรต่อท้ายตอนสร้างตารางมาเช่น
CREATE TABLE `test` (
...
) ENGINE=MyISAM AUTO_INCREMENT=277 DEFAULT CHARSET=tis620 AUTO_INCREMENT=277 ;
ตรงที่ระบุไว้ว่า charset=tis620 เป็นตัวบ่งบอกว่าจะให้เข้ารหัสแบบใด มิน่าว่าในส่วนของตัวเก่า export จาก version เก่ามาลงทำไงก็ไม่ได้สักที เสร็จไปขั้นตอนหนึ่ง
ทีนี้เมื่อได้แล้วคราวนี้ลองไปเปิด phpmyadmin version ใหม่ล่าสุด 2.9.0.1 ใช้การได้เรียบร้อยแล้ว หลังจากนั้นปัญหาต่อมาถ้าเราต้องการ fetch ข้อมูลออกมาจาก database โดยตรงเหมือนแต่ก่อนจะไม่ได้แล้ว จะเป็นภาษา ????? ทันที ดังนั้นก่อนจะทำการใดๆ ต้อง query บรรทัดนึงไปก่อนคือ
set names utf8 collate utf8_unicode_ci; หรือถ้าเป็นไทยก็ set names tis620 collate tis620_thai_ci;
แต่สำหรับภาษาไทยต้องระวัง Host นอกอาจจะไม่มี Support ดังนั้นใช้ UTF8 จะปลอดภัยกว่าตอนนี้ผมเปลี่ยนมาใช้ UTF8 แทบจะร้อยเปอร์เซนต์แล้ว อีกอย่างตอนใช้ Linux file อะไรผมก็ save เป็น UTF8 ทั้งนั้น ไม่งอแงเหมือน tis620
เสริมอีกเรื่องการ export สำหรับ version 5 นี้อาจจะต้อง mysqldump อย่างเดียว ตัวอย่าง
การ dump ทั้งหมด
mysqldump -u root -p --default-character-set=utf8 --set-charset=true --all-databases > mysql.sql
การ dump แต่ละ db
mysqldump -u root -p --default-character-set=utf8 --set-charset=true -B mydb > mydb.sql
จริงๆ ตอนใส่ --default-character-set=utf8 ผมยังไม่เห็นความต่างกับไม่ใส่แต่อย่างใด แต่ใส่ไว้ก่อนกันเหนียวไว้ก็ดี
ตอนนี้ก็พร้อมรับมือแล้วสำหรับ version ใหม่ทั้ง php และ mysql อย่าง config อะไรก็เตรียมไว้ปรับเปลี่ยนแล้วเวลา Host มันเปลี่ยนแปลงโดยพลการจะได้ไม่เครียดมาก
*** ไม่ต้องใช้ phpmyadmin 2 version พร้อมกันแล้ว เสร่ออยู่ได้ตั้งหลายวัน
MrsJan
11 ต.ค. 2549
สมัครสมาชิก:
ส่งความคิดเห็น (Atom)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น