ホームページ  >  記事  >  データベース  >  Laravel 5.5の複数の移行における「ベーステーブルまたはビューはすでに存在します」エラーを解決するにはどうすればよいですか?

Laravel 5.5の複数の移行における「ベーステーブルまたはビューはすでに存在します」エラーを解決するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-23 15:51:17330ブラウズ

How to Resolve the

Laravel 5.5 エラー処理: 複数の移行での「ベース テーブルまたはビューがすでに存在します」への対処

複数の Laravel 移行を実行する場合、開発者は次のような問題に遭遇する可能性があります。 「ベーステーブルまたはビューはすでに存在します」エラー。これは、1 つ以上の移行ファイルがデータベースにすでに存在するテーブルを作成しようとした場合に発生する可能性があります。

問題の説明:

提供された問題で概説されているように、 php 職人移行を使用して「users」テーブルを移行するとエラーが発生しましたが、「lists」テーブルは作成されないままでした。

トラブルシューティングの手順:

  1. 移行ファイルの調査: 「lists」テーブルを作成するための移行ファイル (おそらく create_lists_table.php という名前) が、database/migrations ディレクトリに存在することを確認します。
  2. 既存のデータベースを確認します。テーブル: データベース クエリ ツールまたはコマンド ラインを使用して、「users」テーブルがデータベースにすでに存在していることを確認します。これは、重複した移行試行の可能性を示しています。
  3. ミドルウェアの確認: 検査移行順序を変更する、または競合を引き起こす可能性のあるミドルウェア ファイルのデータベース/移行フォルダー。
  4. 外部キー制約を無効にする: ユーザーの作成を容易にするために、外部キー制約を一時的に無効にします。 ' エラーのないテーブル。
  5. 移行履歴の分析: phpArtisan Migrate:status を実行して移行履歴を確認し、失敗したか重複が作成された可能性がある以前に適用された移行を特定します。

解決策:

この特定のケースでは、提供された解決策には次のように create_users_table.php 移行ファイルを変更することが含まれていました:

<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>

明示的に指示することによりcreate() の前に DropIfExists() に移行すると、テーブルの重複エラーが解決され、「users」テーブルが正常に移行できるようになりました。さらに、移行の実行順序はファイル名によって制御できます。たとえば、移行ファイルの名前を 2023_08_29_100000_create_users_table.php に変更すると、移行ファイルは 2023_08_29_100000_create_lists_table.php.

より前に実行されます。

以上がLaravel 5.5の複数の移行における「ベーステーブルまたはビューはすでに存在します」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。