我实际上正在构建一个基于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 功能??运行特殊命令?
1条答案
按热度按时间3phpmpom1#
遇到的错误可能源于迁移文件试图回滚数据库中不存在的表。以下是解决此问题的分步指南:
**1.验证表是否存在:**首先确认您的数据库中是否存在卡片表,检查您的数据库架构是否创建了卡片表,如果不存在,则进行下一步操作。
**2.修改迁移文件:**如果cards表不存在,可以考虑注解掉迁移文件中与Card模型相关的down()方法中的内容,避免回滚操作尝试删除不存在的表。
例如,暂时注解掉down()方法中的代码:
字符串
运行Rollback命令:注解掉down()方法后,使用以下命令再次运行rollback命令:
型
**3.数据库测试:**如果问题仍然存在,请考虑明确创建一个单独的或全新的数据库进行测试。迁移到此新数据库,以观察迁移是否运行无误。这种方法有助于隔离潜在的特定数据库问题。
遵循这些步骤应该有助于识别和解决与迁移相关的问题。通过验证表是否存在,调整迁移文件,并可能在不同的数据库上进行测试,您可以解决问题并更有效地进行Laravel迁移。