Sự cố:"Khóa được chỉ định quá dài; độ dài khóa tối đa là 767 byte"
Một trong những vấn đề bạn có thể gặp phải khi sử dụng PHP framework Laravel là:
Specified key was too long; max key length is 767 bytes
Sau một số nghiên cứu, tôi phát hiện ra rằng nó sẽ xuất hiện khi sử dụng các phiên bản MySQL cũ hơn (trước 5.7.8) hoặc MariaDB (trước 10.2.2). Đó là MariaDB trong trường hợp của tôi.
Giải pháp # 1:
Trong Laravel, điều này có thể được giải quyết đơn giản bằng cách thay đổi cấu hình nhà cung cấp dịch vụ ứng dụng của bạn (trong app/Providers/AppServiceProvider.php
) với những điều sau đây:
use Illuminate\Support\Facades\Schema;
public function boot()
{
/**
* Ensure we aren't running into `Specified key was too long; max key length is 767 bytes`
*
* @see https://peterthaleikis.com/posts/laravel:-specified-key-was-too-long-max-key-length-is-767-bytes/
**/
Schema::defaultStringLength(191);
}
Sau đó, bạn có thể cần phải xây dựng lại cơ sở dữ liệu của mình bằng cách sử dụng php artisan migrate:fresh --seed
- điều này sẽ đặt lại hoàn toàn cơ sở dữ liệu của bạn và bắt đầu lại mới.
Giải pháp # 2:
Bạn cũng có thể nâng cấp máy chủ cơ sở dữ liệu của mình. Điều này chưa được thảo luận ở đây vì nó rất cụ thể về hệ thống. DuckDuckGo là bạn của bạn 💪️