Ralat Migrasi Laravel: Panjang Kunci Unik Melebihi Had
Apabila cuba memindahkan jadual pengguna dalam Laravel menggunakan migrasi, pembangun mungkin menghadapi ralat: "[SQLSTATE[42000]: Ralat sintaks atau pelanggaran akses: 1071 Kekunci yang ditentukan terlalu panjang; panjang kekunci maks ialah 767 bait." Ralat ini biasanya timbul apabila kunci unik yang ditentukan lebih panjang daripada panjang maksimum yang dibenarkan.
Pernyataan Masalah
Penghijrahan yang disediakan cuba mencipta jadual pengguna dengan kunci unik pada lajur e-mel. Walau bagaimanapun, lajur e-mel ditetapkan mempunyai panjang 320 aksara, melebihi had panjang maksimum.
Penyelesaian
1. Kurangkan Panjang Lajur E-mel
Kurangkan panjang lajur e-mel kepada nilai yang lebih kecil, seperti 250 atau lalai 191 aksara. Laraskan penghijrahan seperti berikut:
Schema::create('users', function(Blueprint $table) { // ... $table->string('email', 250); // Update the email column length // ... });
2. Tetapkan Panjang Rentetan Lalai (Laravel 5.4 )
Jika anda menggunakan Laravel 5.4 atau lebih tinggi, anda boleh menetapkan panjang rentetan lalai dalam kaedah but fail AppServiceProvider.php:
public function boot() { Builder::defaultStringLength(191); }
Ini akan menetapkan panjang lalai 191 aksara untuk semua lajur rentetan yang dibuat dalam migrasi, memastikan bahawa kunci unik tidak melebihi panjang yang dibenarkan.
Atas ialah kandungan terperinci Ralat Migrasi Laravel: Bagaimana untuk Membetulkan 'Panjang Kunci Unik Melebihi Had'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!