Bagaimana untuk Membetulkan Ralat Panjang Kunci Unik dalam Migrasi Laravel?

Barbara Streisand
Lepaskan: 2024-10-31 02:32:02
asal
869 orang telah melayarinya

How to Fix Unique Key Length Errors in Laravel Migrations?

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);
Salin selepas log masuk

Sebagai alternatif, anda boleh menentukan panjang kunci unik secara eksplisit sebagai parameter kedua kepada 'unique() ' kaedah:

$table->unique('email', 'users_email_uniq', 320);
Salin selepas log masuk

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);
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan