لاراول 5.4 تغییری را در character set پیش فرض دیتابیس اعمال کرده است و آن را به utf8mb4 تغییر داده که می تواند emoji ها را نیز ذخیره کند. این فقط برنامه های جدید را تحت تاثیر قرار می دهد و تا زمانیکه از MySQL v5.7.7 یا نسخه های بالاتر استفاده می کنید مشکلی نخواهید داشت.
آنهایی که از MariaDB یا نسخه های قدیمی تر MySQL استفاده می کنند مثل من احتمالا با مشکل زیر روبرو خواهند بود:
[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email)) [PDOException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
همانطور که در مستندات Migration لاراول آمده است، برای رفع مشکل باید فایل AppServiceProvider.php را ویرایش کرده و در داخل متد Boot آن ، کد زیر را قرار داده و طول پیش فرض رشته را تعیین کنید:
use Illuminate\Support\Facades\Schema; public function boot() { Schema::defaultStringLength(191); }
حالا همه چیز باید درست کار کند.