Rumah > pangkalan data > tutorial mysql > Ralat Migrasi Laravel: Bagaimana untuk Membetulkan 'Panjang Kunci Unik Melebihi Had'?

Ralat Migrasi Laravel: Bagaimana untuk Membetulkan 'Panjang Kunci Unik Melebihi Had'?

Susan Sarandon
Lepaskan: 2024-12-05 17:52:11
asal
894 orang telah melayarinya

Laravel Migration Error: How to Fix

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

    // ...
});
Salin selepas log masuk

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

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!

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