Laravel - 常見問題: Syntax error or access violation


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

在Laravel5.4之後,下migrate指令的時候會發生這個錯誤,
因為Laravel 5.4對默認數據庫字符集進行了更改,
現在utf8mb4它包含了對存儲表情符號的支持。
由於utf8mb4的儲存空間需求膨脹了4倍, 導致預設長度無法正常寫入資料庫,
如果您運行的是MySQL v5.7.7及更高版本,就不會遇到這個問題。

要解決這個問題只要編輯app/Providers/AppServiceProvider.php這支檔案,並在boot方法中設定默認字符串的長度:

use Illuminate\Support\Facades\Schema; 

public function boot() { 
    Schema::defaultStringLength(191); 
}

再重新下migrate指令就可以了

Reference:

留言

這個網誌中的熱門文章

什麼是QEMU ? 什麼是KVM ? 什麼是QEMU-KVM?

[Mac OSX] 如何關閉開機啟動的應用程式?