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

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

Linda Hamilton
Linda Hamiltonasal
2024-11-30 00:29:09910semak imbas

How to Solve Laravel Migration Error: Unique Key Length Limit Exceeded?

Ralat Penghijrahan Laravel: Had Panjang Kunci Unik Melebihi

Dalam Laravel, apabila membuat migrasi untuk menambah kunci unik pada lajur dengan rentetan yang terlalu panjang, anda mungkin menghadapi ralat berikut:

[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Ralat ini selalunya boleh diselesaikan dengan menentukan panjang yang lebih kecil untuk lajur. Panjang lalai untuk rentetan ialah 250 aksara, yang sepatutnya mencukupi untuk kebanyakan alamat e-mel dan rentetan biasa yang lain.

Dalam penghijrahan khusus anda, anda telah menentukan lajur e-mel sebagai rentetan dengan panjang 320. Cuba mengurangkan panjang ini kepada 250 atau nilai lalai:

Schema::create('users', function (Blueprint $table) {
    $table->string('email', 250); // or $table->string('email');

Jika anda masih mengalami ralat walaupun selepas melaraskan panjang lajur, anda boleh cuba menetapkan panjang rentetan lalai untuk pangkalan data anda. Dalam Laravel 5.4 dan lebih baru, anda boleh mencapai ini dengan menambahkan perkara berikut pada fail AppServiceProvider.php anda:

use Illuminate\Database\Schema\Builder;

public function boot()
{
    Builder::defaultStringLength(191);
}

Ini akan menetapkan panjang rentetan lalai kepada 191 aksara untuk semua lajur baharu yang dibuat dalam migrasi.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat Migrasi Laravel: Had Panjang Kunci Unik Melebihi?. 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