Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyelesaikan Ralat \'Jadual Asas atau Paparan Sudah Wujud\' dalam Laravel 5.5 Pelbagai Migrasi?

Bagaimana untuk Menyelesaikan Ralat \'Jadual Asas atau Paparan Sudah Wujud\' dalam Laravel 5.5 Pelbagai Migrasi?

Susan Sarandon
Lepaskan: 2024-10-23 15:51:17
asal
429 orang telah melayarinya

How to Resolve the

Pengendalian Ralat Laravel 5.5: Menangani "Jadual Asas atau Paparan Sudah Wujud" untuk Berbilang Migrasi

Apabila melaksanakan berbilang migrasi Laravel, pembangun mungkin menghadapi ralat "Jadual asas atau paparan sudah wujud". Ini boleh berlaku apabila satu atau lebih fail migrasi cuba mencipta jadual yang telah wujud dalam pangkalan data.

Penerangan Masalah:

Seperti yang digariskan dalam isu yang disediakan, percubaan untuk memindahkan jadual 'pengguna' menggunakan php artisan migrate mengakibatkan ralat, manakala jadual 'senarai' kekal tidak dibuat.

Langkah Penyelesaian Masalah:

  1. Periksa Fail Migrasi: Sahkan bahawa fail migrasi untuk mencipta jadual 'senarai' (kemungkinan dinamakan create_lists_table.php) terdapat dalam direktori pangkalan data/migrasi.
  2. Semak Pangkalan Data untuk Sedia Ada Jadual: Gunakan alat pertanyaan pangkalan data atau baris arahan untuk mengesahkan bahawa jadual 'pengguna' sudah wujud dalam pangkalan data, menunjukkan kemungkinan percubaan migrasi pendua.
  3. Semak Middleware: Periksa folder pangkalan data/penghijrahan untuk sebarang fail middleware yang mungkin mengubah susunan migrasi atau menyebabkan konflik.
  4. Lumpuhkan Kekangan Kunci Asing: Lumpuhkan kekangan kunci asing buat sementara waktu untuk memudahkan penciptaan 'pengguna ' jadual tanpa ralat.
  5. Analisis Sejarah Migrasi: Jalankan php artisan migrate:status untuk menyemak sejarah migrasi dan mengenal pasti sebarang migrasi yang digunakan sebelum ini yang mungkin gagal atau mencipta pendua.

Penyelesaian:

Dalam kes khusus ini, penyelesaian yang disediakan melibatkan mengubah suai fail migrasi create_users_table.php seperti berikut:

<code class="php"><?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::dropIfExists('users');
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}</code>
Salin selepas log masuk

Dengan mengarahkan secara eksplisit pemindahan ke dropIfExists() sebelum create(), ralat jadual pendua telah diselesaikan, membolehkan jadual 'pengguna' berjaya dipindahkan. Selain itu, susunan larian migrasi anda boleh dikawal oleh nama fail. Sebagai contoh, menamakan semula fail migrasi kepada 2023_08_29_100000_create_users_table.php akan menyebabkan ia dijalankan sebelum 2023_08_29_100000_create_lists_table.php.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'Jadual Asas atau Paparan Sudah Wujud\' dalam Laravel 5.5 Pelbagai Migrasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
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