[หาวิธีแก้ได้แล้ว] Export+import DB จาก Hostgator แล้วภาษาไทยเป็น ?????

เริ่มโดย clippoo, 28 เมษายน 2008, 00:34:08

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

clippoo

พอดีว่า ใช้เวลามาทั้งวันแล้ว กับการ Export+Import ฐานข้อมูล เนื่องจากจะย้าย host จาก hostgator มาเป็น host เมืองไทย แต่มีปัญหาตรงฐานข้อมูลครับ ภาษาไทย กลายเป็น ? หมดเลย ทั้งๆที่เวบไซท์ก็เป็น UTF-8 ใช้งานได้ปรกติ บันทึกข้อมูลภาษาไทยปรกติ แต่พอ export SQL มาภาษาไทยกลายเป็น ? หมดเลย

จากการอ่าน ดังนี้
- เมื่อภาษาไทยกลายเป็น ?????????
http://www.itwizard.info/technology/MySQL/MySQL_with_thai.html

- mySQL กับการตั้งค่าผิดๆ
http://www.thaihosttalk.com/th1/index.php?topic=9906.msg96285#msg96285

- แก้ปัญหา charset ของ mysql กับปัญหาภาษาไทยอ่านไม่ออก ????
http://www.thaihosttalk.com/th1/index.php?topic=6764.0

- ทำความเข้าใจกับ MySQL 5.x, 4.x และ PHP เวอร์ชั่น 5
http://appservnetwork.com/modules.php?name=News&file=article&sid=5#


ผมก็ยังไม่สามารถหาทางแก้ได้ จึงได้เรียบเรียง STEP ให้ดูว่าผมยังโง่ตรงไหน? จากภาพนี้



ใครก็ได้ช่วยเสียเวลาพิมสัก 1-2 บรรทัด ว่าผมควรทำยังไงดีครับ?  :-X
[direct=http://www.zeedmovie.com/affiliate/]ZeedMovie.com/affiliate/[/direct] <<==  เปิดให้สร้างรายได้แล้ว จัดไปส่วนแบ่ง 80% โฮะๆๆ (แต่ยอด ครึ่งนึงของมีนาคม และ 1 เม.ย.-10 มิ.ย. ขอยืมไว้กันติดคุกก่อน 55)

รณรงค์ การทำสื่อ การหารายได้ อย่างมีขอบเขต ลด/ละ สื่อประเภทอนาจาร เพื่อสังคมลูกหลาน

D-N-A

หาก dump ไม่ได้ ก็ลอง เลือกที่ sql  เมนู ด้านบน ค่อยๆ copy จาก text แล้วมา past ได้ไหมครับ  ผมเคยทำนะ  เมื่อยมือ เลย

หรือตอน import   ชุดอักขระของไฟล์ (character set):  เป็น utf-8 หรือ tis-620 หรือยังครับ ลอง clear อันเก่าให้หมด แล้ว ตอนที่ import มา ให้เลือกเป็น  utf-8 ,tis-620 ดูครับ  เพราะดู จากหน้า จอ ของคุณ  ชุดอักขระของไฟล์ (character set):  กำหนดเป็น latin1  อะครับ

ลองดู ครับ  หากจะ pm ไปให้ผมช่วยเช็คก็ได้นะ  หากทำได้จะทำให้    :D
[direct=http://www.tarad2u.net ]ลงประกาศฟรี[/direct]
tarad2u
[direct=http://www.thaipet2u.com]ตลาดซื้อขายสัตว์เลี้ยง[/direct]
thaipet2u
[direct=http://www.talad-pra.com]ตลาดพระเครื่อง[/direct]
พระเครื่อง
[direct=http://www.buycar4u.com]ซื้อขายรถยนต์มือสอง[/direct]
buycar4u
[direct=http://www.bike2hand.net]ตลาดมอเตอร์ไซค์ [/direct]
bike2hand

ขาย youtube แชนแนล พระเครื่อง 70k follow ทำเงินได้หลายทาง
T.086-9165783,line:taladpra

clippoo

ขอบคุณสำหรับคำแนะนำครับ แต่ ผมลองมาหลายวิธีแล้ว เรื่องตั้ง collation เป็น utf-8 หรือ tis620 ก็ตั้งมาแล้ว แต่ไม่ได้เลย ก็เลยทำแบบ latin เพื่อหวังจะให้ที่เก่ากับที่ใหม่แสดงผลเหมือนกัน เพราะที่เก่า ใช้ภาษาไทยได้ปรกติ แต่เอามาใช้กับที่ใหม่ในการตั้งอะไรต่างๆแบบเดียวกันไม่ได้ครับ งงมากเลย
[direct=http://www.zeedmovie.com/affiliate/]ZeedMovie.com/affiliate/[/direct] <<==  เปิดให้สร้างรายได้แล้ว จัดไปส่วนแบ่ง 80% โฮะๆๆ (แต่ยอด ครึ่งนึงของมีนาคม และ 1 เม.ย.-10 มิ.ย. ขอยืมไว้กันติดคุกก่อน 55)

รณรงค์ การทำสื่อ การหารายได้ อย่างมีขอบเขต ลด/ละ สื่อประเภทอนาจาร เพื่อสังคมลูกหลาน

clippoo

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

1. ต้องดูว่าฐานข้อมูลเดิมของเรา ก่อนเอาไปใส่ host เก่า version อะไร? แล้วที่จะไปใส่ที่ใหม่ version อะไร?
- เพราะ ตั้งแต่ phpMyAdmin v.2.7.2 จะเริ่มมีการตั้งค่าว่า ฐานข้อมูลนี้+แต่ละตาราง+แต่ละฟิวข้อมูล "เรียงลำดับแบบไหน?" ถ้าเราไม่ได้กำหนดมาก่อนเลย เวลาเอา sql ที่ไมได้กำหนดไปใช้กับ host ที่มี phpmyadmin version ใหม่กว่า 2.7.2 ก็จะทำให้ได้เวบภาษาไทยแสดงผลถูกต้องก็จริง แต่ข้อมูลจะเก็บในรูปแบบ latin1_swedish ที่ดูใน phpmyadmin จะยึกยือๆๆ แต่ดูในหน้าเวบเพจแสดง ไทย ปรกติ

เมื่อเรา export sql ของฐานข้อมูลที่เรียงลำดับแบบ latin1_swedish เพื่อจะไปใส่ที่ใหม่ ทำยังไงๆภาษาไทยก็ไม่ถูกต้องซะที เพราะ "การเรียงลำดับ ของแต่ละฟิวด์ ยังไม่ถูก" ฉนั้น .....

2. เมื่อจะเอา SQL ที่ไม่ได้กำหนด การเรียงลำดับ มาก่อนเลยไปใช้กับที่ใหม่ ต้องเปลี่ยนโครงสร้างฐานข้อมูลก่อน !!
- เนื่องจากไม่เคยกำหนดการเรียงลำดับ หรือมีการเรียงแบบ latin1_swedish อยู่ พอ Export จะเอาไปใส่ที่ใหม่ เราจะได้ไฟล์ .sql ที่ดูใน editplus แล้วไทยเป็นยึกยือๆๆ นั่นก็จะเอาไปใส่ที่ใหม่จะเป็น ยึกยือๆ เช่นกัน แล้วภาษาไทย ก็จะแสดงเป็น ? หรือ ยึกยือๆ ฉนั้น ก่อน export ที่เก่า ไปที่ใหม่ต้อง
            ** เปลี่ยนชนิดของฟิวด์ ที่เกี่ยวกับภาษาไทย ให้เป็น ดังนี้ **
                      char ---> binary
                      varchar ---> varbinary
                      text ---> Blob

เมื่อเปลี่ยนแล้ว ภาษาไทยจะถูกเข้ารหัสเอาไว้ ทีนี้ก็สั่ง Export ได้เลย พอ Export ออกมาแล้วเปิดดูกับ Edit Plus ก็จะเห็นภาษาไทยถูกต้องเลย

3. ก่อนเอาไป import เข้าที่ใหม่ ก็แก้ไขโครงสร้างตารางซะก่อน เพื่อให้ที่ใหม่ ไม่ต้องแก้กลับเองให้เสียเวลา
- นั่นคือ เปิดไฟล์ sql ที่ได้เมื่อกี้ กับ EditPlus มา Find & replace ดังนี้

                      latin1 ---> tis620 หรือ utf8 ก็แล้วแต่ว่าเวบเราเป็นอะไร

                      varbinary ---> varchar
                      binary ---> char
                      blob ---> text
                     
ซึ่งก็คือการแก้โครงสร้างตารางกลับไปแบบเดิม โดยภาษาไทย ยังถูกต้อง

4. พอ import เข้าที่ใหม่ ก็จะเห็นตารางที่ถูกต้อง และดีต่ออนาคต
- เมื่อ import เข้าที่ใหม่ ก็จะดูด้วย phpmyadmin ได้เลยว่า ภาษาไทยแต่ละ record แสดงผลถูกต้อง ไม่ได้ยึกยือๆแล้ว และโครงสร้างตารางก็มีการเรียงแบบ tis620_thai_ci หรือ utf8_unicode_ci (แล้วแต่จะทำ) อย่างถูกต้อง ต่อไปถ้าจะ export อีก คราวนี้ภาษาไทยจะไม่ยือกยือแล้ว เพราะเรากำหนด charecter set และ การเรียงลำดับ ไว้ถูกต้องแล้ว


ข้อควรระวัง
- เวลาเปลี่ยนชนิดฐานข้อมูล ระวังอย่าเปลี่ยนผิดชนิด เช่น text --> binary ข้อมูลมันจะหายไปเลย!!
- อย่าผลีผลาม เปลี่ยนการเรียงลำดับ ของฟิวด์ข้อมูล ก่อนที่จะเปลี่ยนฟิวด์นั้นเป็นชนิด binary เพราะ ข้อมูลภาษาไทยจะกลายเป็น ?? ไปเลย แก้กลับไม่ได้
- ก่อนการเปลี่ยนอะไรต่างๆ ไม่ต้องตั้งค่าการเรียงลำดับ ที่หน้าแรก phpmyadmin เป็นแบบใหม่ ให้ใช้แบบที่เก่าใช้นั่นแหละ เพราะเราจะ export แบบ binay ภาษาไทยถูกเข้ารหัสไว้ การเรียงลำดับ ของหน้าแรกเป็นอะไรมันก็ได้ผลเหมือนกัน

- ** ถ้ายังไม่ shure เรื่องการแก้ไขโครงสร้างฟิวด์ ควรทดลองทำกับ ตารางที่คัดลอกไว้อีกชื่อนึงก่อน ถ้าทำได้แล้ว เอาไปใส่ที่ใหม่แล้วภาษาไทยถูกต้อง ก็ค่อยไปทำกับตารางอื่นๆที่จะใช้จริงๆ **


55 งงอยู่ 2 วันเต็มๆ หาวิธีการให้มัน export+import แล้วก็เสร็จเลยนั้น มันไม่มีครับ
มันต้องแก้ไขชนิดฟิวด์ให้ภาษาไทยเป็น binary ก่อน ถึงจะ export ทั้งหมด ไปใส่ที่ใหม่ได้แล้วไม่มีปัญหา

ผม export เวบ OsCommerce แบบ tis620 มีตาราง 64 ตาราง ใช้เวลาแก้ไขแล้วเสร็จ 2 ชั่วโมง  :-X แต่เสียเวลากับการค้นหาวิธีแก้ที่มันง่ายๆอยู่ 2 วัน



อ้อ เรื่องแก้ฟิวด์ฐานข้อมูลได้วิธีการมาจากหน้านี้ http://www.blognone.com/node/3620
[direct=http://www.zeedmovie.com/affiliate/]ZeedMovie.com/affiliate/[/direct] <<==  เปิดให้สร้างรายได้แล้ว จัดไปส่วนแบ่ง 80% โฮะๆๆ (แต่ยอด ครึ่งนึงของมีนาคม และ 1 เม.ย.-10 มิ.ย. ขอยืมไว้กันติดคุกก่อน 55)

รณรงค์ การทำสื่อ การหารายได้ อย่างมีขอบเขต ลด/ละ สื่อประเภทอนาจาร เพื่อสังคมลูกหลาน