Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Membetulkan Ralat Panjang Kunci Unik dalam Migrasi Laravel?

Bagaimana untuk Membetulkan Ralat Panjang Kunci Unik dalam Migrasi Laravel?

Barbara Streisand
Barbara Streisandasal
2024-10-31 02:32:02869semak imbas

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);

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!

Kenyataan:
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