หน้าแรก/บทความ/Laravel 5.5 แก้ข้อผิดพลาด Specified key was too long
กลับหน้าบทความ
🔧Laravel

Laravel 5.5 แก้ข้อผิดพลาด Specified key was too long

แนะนำวิธีแก้ข้อผิดพลาด Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes ที่เกิดขึ้นเมื่อรัน php artisan migrate บน Laravel 5.4 ขึ้นไปกับ MySQL เวอร์ชั่นเก่า

ศิริชัย ธีรภัทรสกุล (ตั้ม)อ่าน 2 นาที27 กุมภาพันธ์ 2561
#Laravel#MySQL#Migration#Error#utf8mb4

สืบเนื่องมาจากการใช้คำสั่ง php artisan migrate เพื่อทำระบบ Auth เบื้องต้น แต่มีข้อผิดพลาดข้อความประมาณว่า:

Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

สาเหตุ

จากที่ดูใน Doc ตั้งแต่ Laravel 5.4 มีการเปลี่ยนมาใช้ character utf8mb4 เป็น Default เพื่อรองรับอิโมจิ (emojis) ในฐานข้อมูล ทีนี้ถ้า MySQL เราเก่ากว่า 5.7.7 release หรือ MariaDB เก่ากว่า 10.2.2 release มันก็จะขึ้น Error ตามด้านบน

วิธีแก้ไข

วิธีแก้ไขคือเราจะเรียกใช้ Schema::defaultStringLength โดยเข้าไปแก้ใน AppServiceProvider เพิ่ม Code ตามด้านล่างนี้

use Illuminate\Support\Facades\Schema;

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    Schema::defaultStringLength(191);
}

ทีนี้ลองสั่ง php artisan migrate ดูอีกครั้ง คิดว่าน่าจะใช้งานได้แล้วครับ ^^

🚀 รับพัฒนาเว็บไซต์ & เว็บแอพพลิเคชั่น

สนใจดูตัวอย่างงานหรือสอบถามเพิ่มเติม ติดต่อได้เลยครับ โค้ดโมทีฟ (CodeMotive)