Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ฟีเจอร์ที่ Deprecated ใน MySQL 8.0: ควรย้ายก่อนถูกลบ

Deprecated = ยังทำงานได้ แต่อาจถูกลบในอนาคต

รายการ Deprecated Features

1. Character Set: utf8mb3

  • Deprecated → ใช้ utf8mb4 แทน (รองรับ Emoji, Supplementary Characters)
  • utf8mb3 เป็น Alias ของ utf8 (3-byte max)

2. Authentication: sha256_password

  • Deprecated → ใช้ caching_sha2_password แทน (Default ใน 8.0)
  • ปลอดภัยกว่า และเร็วกว่า (Caching)

3. validate_password Plugin

  • Implementation เปลี่ยน → ต้องใช้ Component Infrastructure
  • อาจถูกลบในอนาคต

4. AUTO_INCREMENT บน FLOAT/DOUBLE

  • Deprecated: AUTO_INCREMENT สำหรับ FLOAT, DOUBLE
  • Deprecated: UNSIGNED สำหรับ FLOAT, DOUBLE, DECIMAL
  • ใช้ INTEGER Types (INT, BIGINT) สำหรับ Auto-increment

5. ZEROFILL Attribute

  • Deprecated สำหรับ Numeric Types
  • ทางเลือก: ใช้ LPAD() ใน Application หรือ View
  • ตัวอย่าง: LPAD(id, 10, '0') → '0000000001'

6. || Operator สำหรับ String Concatenation

  • Deprecated เว้นแต่จะ Enable SQL_MODE=PIPES_AS_CONCAT
  • ปกติ || = Logical OR
  • ใช้ CONCAT() หรือ CONCAT_WS() แทน

7. JSON_MERGE()

  • Deprecated → ใช้ JSON_MERGE_PRESERVE() แทน
  • JSON_MERGE_PATCH() สำหรับ Merge แบบ Overwrite

8. SELECT ... INTO Clause Position

  • Deprecated: SELECT ... INTO @var FROM table (INTO ท้าย)
  • ใช้ SELECT ... INTO @var FROM table (INTO หลัง SELECT) แทน
  • Standard SQL: INTO ก่อน FROM

9. FLUSH HOSTS

  • Deprecated → ใช้ TRUNCATE TABLE performance_schema.host_cache;
  • ต้องมีสิทธิ์ DROP บน Table นั้น

10. mysql_upgrade Client

  • Deprecated → Upgrade Tasks ย้ายมาทำใน Server เอง (Auto)
  • รัน mysql_upgrade ไม่จำเป็นแล้ว

11. InnoDB Memcached Plugin

  • Deprecated → อาจถูกลบ
  • ทางเลือก: ใช้ Redis, Memcached แยกต่างหาก

12. mysql_upgrade_info File

  • File ใน Data Directory ที่เก็บ Version
  • Deprecated → อาจถูกลบ

13. Replication: relay_log_info_file, --master-info-file

  • System Variable และ Option Deprecated
  • ใช้ Crash-safe Replication Tables (Default ใน 8.0)

แนวทางการย้าย (Migration Guide)

  1. Audit: ใช้ mysqlcheck --check-upgrade หรือ Upgrade Checker Utility
  2. Test: รัน Application บน MySQL 8.0 Staging ด้วย log_warnings=2 (เก่า) / log_error_verbosity=2 (ใหม่)
  3. Fix: แก้ Deprecated Usage ตามรายการข้างต้น
  4. Monitor: ดู Error Log หา Deprecation Warnings

แสดง Deprecation Warnings

SHOW WARNINGS;
-- หรือใน Error Log: [Warning] 'JSON_MERGE' is deprecated...