Menyelesaikan Masalah Ralat Migrasi Laravel: Panjang Kunci Unik Melebihi
Apabila cuba mencipta kunci unik untuk lajur e-mel dalam Laravel, anda mungkin akan menghadapi berikut ralat:
[IlluminateDatabaseQueryException] SQLSTATE[42000]: Ralat sintaks atau pelanggaran akses: 1071 Kunci yang ditentukan terlalu panjang; panjang kunci maks ialah 767 bait
Walaupun anda telah menentukan kunci indeks sebagai parameter kedua kepada kaedah unique(), ralat berterusan. Ini mungkin disebabkan oleh panjang lajur e-mel.
Penyelesaian untuk versi Laravel sebelum 5.4:
Untuk menyelesaikan ralat ini, kurangkan panjang lajur e-mel . Panjang lalai ialah 250 aksara, jadi ubah suai baris berikut dalam penghijrahan anda:
$table->string('email', 250);
Sebagai alternatif, anda boleh menggunakan panjang lalai:
$table->string('email');
Penyelesaian untuk Laravel 5.4 dan ke atas:
Dalam Laravel 5.4, anda boleh menetapkan rentetan lalai panjang untuk mengelakkan ralat ini. Dalam fail AppServiceProvider.php anda, tambahkan kod berikut pada kaedah but:
use Illuminate\Database\Schema\Builder; public function boot() { Builder::defaultStringLength(191); }
Ini akan memastikan semua lajur rentetan menggunakan panjang maksimum 191 aksara.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat Migrasi Laravel: Panjang Kunci Unik Melebihi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!