MySQL 9.0 Charset

วันนี้ใช้งาน mysql version 9.0 บน docker โดยใช้ Image mysql official image จาก hub.docker.com พบว่ามีการเปลี่ยนแปลงดังนี้

  1. Charset ที่เคยใช้ urf8_general_ci deprecated ไปแล้ว
  2. ต้องเปลี่ยนมาใช้ charset คือ utf8mb4 และต้องเปลี่ยน collation เป็น utf8mb4_unicode_ci แทน

การ config ให้ container สามารถใช้ charset และ collation ดังกล่าวได้มีวิธีการดังนี้

  1. สร้างไฟล์ config my.cnf ไว้ที่ในไดเรกทอรี่ที่รัน docker หรือ docker-compose
  2. กำหนดรายละเอียดในไฟล์ my.cnf ดังนี้

[mysqld]

character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

3. จากนั้นทำการ map volume config ของ mysql เข้าไปทับใน docker ดังนี้

volumes:
  - /home/www/db:/var/lib/mysql
  - /home/www/etc/my.cnf:/etc/my.cnf:ro
  - /home/www/data:/root

4. เมื่อ config เสร็จเรียบร้อย ดำเนินการรัน docker ใหม่ สำหรับผู้ใช้ docker-compose ดังนี้

docker-compose down

docker-compose up -d


Comments

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *