Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Saya Mendapat Ralat \"Kunci Unik Terlalu Panjang\" Semasa Migrasi Laravel?

Mengapa Saya Mendapat Ralat \"Kunci Unik Terlalu Panjang\" Semasa Migrasi Laravel?

Barbara Streisand
Barbara Streisandasal
2024-10-31 04:39:30860semak imbas

Why Am I Getting a

Menyelesaikan Masalah Ralat Migrasi Laravel: "Kunci Unik Terlalu Panjang"

Semasa cuba memindahkan jadual pengguna dalam Laravel, anda mungkin menghadapi ralat: "[IlluminateDatabaseQueryException] ... Kunci yang ditentukan terlalu panjang; panjang kunci maks ialah 767 bait." Ralat ini timbul apabila kunci unik yang anda tentukan melebihi panjang maksimum yang dibenarkan.

Memahami Isu

Panjang rentetan lalai dalam Laravel untuk lajur seperti e-mel ialah 255 watak. Apabila anda cuba mencipta kunci unik pada lajur dengan panjang rentetan yang lebih panjang (dalam kes ini, 320 aksara untuk lajur e-mel), penghijrahan gagal.

Membetulkan Ralat

  1. Kurangkan Panjang Rentetan E-mel: Tentukan panjang yang lebih pendek untuk lajur e-mel dalam anda migrasi:
<code class="php">$table->string('email', 250);</code>
  1. Gunakan Panjang Rentetan Lalai: Gunakan panjang rentetan lalai untuk lajur e-mel:
<code class="php">$table->string('email');</code>
  1. Tetapkan Panjang Rentetan Lalai dalam AppServiceProvider (Laravel 5.4 dan Ke Atas):

Dalam fail AppServiceProvider.php, dalam kaedah but, tetapkan panjang rentetan lalai untuk semua migrasi:

<code class="php">use Illuminate\Database\Schema\Builder;

public function boot()
{
    Builder::defaultStringLength(191);
}</code>

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat \"Kunci Unik Terlalu Panjang\" Semasa 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