如何解決 Laravel 5.5 多重遷移中的「基底表或視圖已存在」錯誤?

Susan Sarandon
發布: 2024-10-23 15:51:17
原創
329 人瀏覽過

How to Resolve the

Laravel 5.5 錯誤處理:針對多次遷移解決「基底表或視圖已存在」

執行多個Laravel 遷移時,開發者可能會遇到“基底表或視圖已存在”錯誤。當一個或多個遷移檔案嘗試建立資料庫中已存在的資料表時,可能會發生這種情況。

問題描述:

如所提供的問題中所述,嘗試使用php artisan migrate 遷移「users」表導致錯誤,而「lists」表仍未創建。

故障排除步驟:

  1. 檢查遷移檔案:驗證用於建立「lists」表的遷移檔案(可能名為create_lists_table.php)是否存在於資料庫/遷移目錄中。
  2. 檢查資料庫是否存在資料表: 使用資料庫查詢工具或命令列確認「users」表已存在於資料庫中,這表示可能存在重複遷移嘗試。
  3. 查看中間件: 檢查任何可能改變遷移順序或導致衝突的中間件檔案的資料庫/移轉資料夾。
  4. 停用外鍵約束:暫時停用外鍵約束以方便建立「使用者」 ' 表沒有錯誤。
  5. 分析遷移歷史記錄: 執行 php artisan 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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!