Isu Panjang Kunci Unik dalam Migrasi Laravel
Dalam Laravel, apabila mencipta kunci unik untuk lajur jadual, ralat yang menyatakan bahawa kunci yang ditentukan terlalu panjang. Isu ini timbul apabila panjang lajur yang ditakrifkan untuk kunci unik melebihi panjang maksimum yang dibenarkan.
Menyelesaikan masalah Isu
Penghijrahan yang disediakan menentukan kekangan unik pada lajur 'e-mel' dengan panjang 320 aksara. Walau bagaimanapun, secara lalai, lajur 'e-mel' dalam Laravel ditakrifkan sebagai rentetan dengan panjang lalai 255. Panjang lalai ini sepatutnya mencukupi untuk kebanyakan alamat e-mel.
Untuk menyelesaikan isu, pertimbangkan untuk mengurangkan panjang lajur 'e-mel' dalam pemindahan kepada nilai yang munasabah, seperti 250 aksara:
$table->string('email', 250);
Sebagai alternatif, anda boleh menentukan panjang kunci unik secara eksplisit sebagai parameter kedua kepada 'unique() ' kaedah:
$table->unique('email', 'users_email_uniq', 320);
Laravel 5.4 and Beyond
Untuk Laravel versi 5.4 dan lebih baru, penyelesaian yang lebih komprehensif tersedia. Dalam fail 'AppServiceProvider.php', tambahkan kod berikut pada kaedah 'boot()':
use Illuminate\Database\Schema\Builder; public function boot() { Builder::defaultStringLength(191); }
Menetapkan panjang rentetan lalai kepada 191 memastikan lajur yang dibuat menggunakan kaedah 'string()' akan mempunyai panjang maksimum 191 aksara, menghapuskan kemungkinan menghadapi isu panjang kunci unik.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat Panjang Kunci Unik dalam Migrasi Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!