首页 > 解决方案 > 运行迁移时出现“SQLSTATE[42S02]:未找到基表或视图”

问题描述

我目前正在研究使用 Laravel 开发 CMS 的课程。我对我的页面进行了一些更改,因为我想给它们一个“位置”特征来更改顺序。我以为我可以删除这些表,然后运行“php artisan migrate”,然后再次为表播种。现在我总是收到以下错误消息:

C:\xampp\htdocs\siggen-cms>php artisan migrate

In Connection.php line 664:

  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'siggen-cms.pages' doesn't exist (SQL: select * from `pages`)  


In Connection.php line 326:

  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'siggen-cms.pages' doesn't exist 

有没有人解决这个问题。stackoverflow 上的所有类似问题都没有帮助。

<?php

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

class CreatePagesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('pages', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('title');
            $table->string('url')->unique();
            $table->text('content');
            $table->integer('position')->unique();
            $table->timestamps();
        });
    }

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

标签: sqllaravelmigrationdatabase-migration

解决方案


可能导致此问题的几个潜在问题:

  1. 如果您要删除所有内容并重新开始新的迁移,请检查迁移的位置(基于时间/日期)以确保在创建表之后需要该表pages
  2. 更有可能基于您说“我认为我可以删除表然后运行“php artisan migrate”,您实际上并没有创建表,因为您的迁移没有为这个特定的表激活。IE 迁移已经运行pages文件,根据数据库迁移表,所以这个迁移文件不会被触及。

    一个。要解决此问题,您可以删除整个数据库并从头开始,您可以尝试回滚迁移,或者为了快速修复,删除迁移表中此迁移文件所在的行。IE SELECT * FROM migrations,找到id迁移页面文件的行,然后删除该行。然后,下次运行php artisan migrate时,它将创建表。


推荐阅读