หลังจากสังเกตเห็นแอปพลิเคชันมีแนวโน้มที่จะทิ้งอีเมลแบบสุ่มเนื่องจากข้อผิดพลาดของค่าสตริงที่ไม่ถูกต้องฉันไปแล้วและเปลี่ยนคอลัมน์ข้อความจำนวนมากเพื่อใช้utf8
ชุดอักขระคอลัมน์และคอลัมน์เริ่มต้นเรียง ( utf8_general_ci
) เพื่อที่จะยอมรับพวกเขา นี่เป็นการแก้ไขข้อผิดพลาดส่วนใหญ่และทำให้แอปพลิเคชันหยุดรับข้อผิดพลาดของ sql เมื่อมีการส่งอีเมลที่ไม่ใช่ภาษาละติน
อย่างไรก็ตามอีเมลบางส่วนยังคงทำให้โปรแกรมตีค่าสตริงที่ไม่ถูกต้อง: (Incorrect string value: '\xE4\xC5\xCC\xC9\xD3\xD8...' for column 'contents' at row 1)
คอลัมน์เนื้อหาคือMEDIUMTEXT
datatybe ซึ่งใช้utf8
ชุดอักขระคอลัมน์และutf8_general_ci
เรียงคอลัมน์ ไม่มีแฟล็กที่ฉันสามารถสลับในคอลัมน์นี้
โปรดทราบว่าฉันไม่ต้องการสัมผัสหรือดูรหัสต้นฉบับแอปพลิเคชันเว้นแต่จำเป็นจริงๆ:
- อะไรเป็นสาเหตุของข้อผิดพลาดนั้น? (ใช่ฉันรู้ว่าอีเมลเต็มไปด้วยขยะแบบสุ่ม แต่ฉันคิดว่า utf8 น่าจะได้รับอนุญาตสวย)
- ฉันจะแก้ไขได้อย่างไร
- ผลกระทบที่เป็นไปได้ของการแก้ไขดังกล่าวมีอะไรบ้าง
สิ่งหนึ่งที่ฉันคิดคือเปลี่ยนเป็น utf8 varchar ([จำนวนมาก]) โดยเปิดใช้งานแฟล็กไบนารี แต่ฉันไม่ค่อยคุ้นเคยกับ MySQL และไม่รู้ว่าจะแก้ไขได้ไหม