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!