Laravel php artisan migrate:找不到基础表或视图

gc0ot86w  于 2023-11-20  发布在  PHP
关注(0)|答案(1)|浏览(101)

我实际上正在构建一个基于Laravel的简单Web应用程序。我已经创建了一个模型卡,并希望为此添加一个迁移。当我运行命令:'php artisan migrate'时,我得到一个错误

SQLSTATE\[42S02\]: Base table or view not found: 1146 Table      'agenda.migrations' doesn't exist (Connection: mysql, SQL: select\<\\migration from migrations order by batch asc,migration asc)

at vendor\\laravel\\framework\\src\\Illuminate\\Database\\Connection.php:822
818▕                     $this-\>getName(), $query, $this-\>prepareBindings($bindings), $e
819▕                 );
820▕             }
821▕
➜ 822▕             throw new QueryException(
823▕                 $this-\>getName(), $query, $this-\>prepareBindings($bindings), $e
824▕             );
825▕         }
826▕     }

字符串
所以我试着运行php artisan migrate:install来创建我的迁移表,它工作了。但是当我再次运行php artisan migrate时,它会删除迁移表。
我也试过:php artisan migrate:reset和php artisan migrate:rollback
这是我的卡类代码

<?php

namespace App\\Models;

use Illuminate\\Database\\Eloquent\\Factories\\HasFactory;
use Illuminate\\Database\\Eloquent\\Model;

class Card extends Model
{
use HasFactory;
public string $title;
public string $description;
}


我的迁徙:

<?php

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

return new class extends Migration
{
/\*\*
\* Run the migrations.
\*/
public function up(): void
{
Schema::create('cards', function (Blueprint $table) {
$table-\>id();
$table-\>timestamps();
});
}

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('cards');
    }

};


我在AppServiceProvider.php上的 Boot 函数中没有任何内容
如何解决这个问题?编辑 Boot 功能??运行特殊命令?

3phpmpom

3phpmpom1#

遇到的错误可能源于迁移文件试图回滚数据库中不存在的表。以下是解决此问题的分步指南:

**1.验证表是否存在:**首先确认您的数据库中是否存在卡片表,检查您的数据库架构是否创建了卡片表,如果不存在,则进行下一步操作。
**2.修改迁移文件:**如果cards表不存在,可以考虑注解掉迁移文件中与Card模型相关的down()方法中的内容,避免回滚操作尝试删除不存在的表。

例如,暂时注解掉down()方法中的代码:

public function down(): void
{
    // Schema::dropIfExists('cards');
}

字符串
运行Rollback命令:注解掉down()方法后,使用以下命令再次运行rollback命令:

php artisan migrate:rollback

**3.数据库测试:**如果问题仍然存在,请考虑明确创建一个单独的或全新的数据库进行测试。迁移到此新数据库,以观察迁移是否运行无误。这种方法有助于隔离潜在的特定数据库问题。

遵循这些步骤应该有助于识别和解决与迁移相关的问题。通过验证表是否存在,调整迁移文件,并可能在不同的数据库上进行测试,您可以解决问题并更有效地进行Laravel迁移。

相关问题