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
Lepaskan: 2024-11-30 00:29:09
asal
844 orang telah melayarinya

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

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

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

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!

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