web-dev-qa-db-ja.com

Laravelを起動できません。「ベーステーブルまたはビューが見つかりません」というエラーが表示されます。

最初に誤って2つの移行をロールバックし、次にphp artisan migrateコマンドを実行すると、次のエラーが発生しました。

[Illuminate\Database\QueryException] SQLSTATE[42S02]: Base table or view not found: 1146 Table 'exercise1.categories' doesn't exist (SQL: select * from categories where parent_id = 0)[PDOException] SQLSTATE [42S02]:ベーステーブルまたはビューが見つかりません:1146テーブル 'exercise1.categories'が存在しません</ code>

それから私はLaravelを止めました。その後、php artisan serveコマンドを実行してLaravelを開始すると、同じエラーが発生します。ロールバックした2つの移行を次に示します。

1。

class CreateCategoriesTable extends Migration
    {

        public function up()
        {
            Schema::create('categories',function (Blueprint $table){
                $table->increments('id');
                $table->string('name');
                $table->text('parent_id');
                $table->timestamps();
        });
        }
        public function down()
        {
            Schema::dropIfExists('categories');
        }
    }

2。

class CreateArticlesTable extends Migration
    {
        public function up()
        {
            Schema::create('articles', function (Blueprint $table) {
                $table->increments('id');
                $table->string('title')->nullable(false);
                $table->longText('article')->nullable(false);
                $table->integer('user_id')->unsigned();
                $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
                $table->timestamps();
            });
        }
        public function down()
        {
            Schema::dropIfExists('articles');
        }
    }

この苛立たしい問題を解決するのを手伝ってください。よろしくお願いします。

9

この問題が発生し、移行ファイルが原因ではない場合は、2つの理由が考えられます。

  1. ServiceProviders 'ブート関数に、存在しないテーブルをクエリしているクエリが含まれているかどうかを確認します。
  2. カスタムヘルパー関数を作成し、そのヘルパー関数をcomposer.jsonファイルにオートロードしたかどうかを確認します。カスタムヘルパー関数に、存在しないテーブルをクエリしているクエリが含まれている場合、このエラーが発生します。

laravelが開始されると、ServiceProvidersのブート関数とオートロードされたカスタムヘルパー関数が最初にロードされるため、すべてのphp artisanコマンドは「ベーステーブルまたはビューが見つかりません」エラーを生成します。

この時点で行うべきことは、存在しないテーブルをクエリしているクエリをコメントアウトし、php artisan serveを実行してから、php artisan migrateを実行することです。次に、それらの行のコメントを解除して保存すると、すべてが正常に機能するはずです。

@devkが提案したように、問題が発生した場所を正確に示すlaravelログファイルを確認することをお勧めします。解決策を見つけることになりました。これについては、忘れないでください オンにするデバッグモード。

20

これらの移行をロールバックすると、categoriesテーブルとarticlesテーブルが削除されます。したがって、migrateコマンドをもう一度実行するだけです。

php artisan migrate
4
Alexey Mezenin

私にとって、このエラーはスケジュールされたタスク in laravelデータベースルックアップを伴うために発生していました。スケジュールされたものからlaravel/app/Console/Kernel.phpでそのルックアップをコメントアウトすることによってタスク、データベースを再度移行することができました。

3
spencerstewart

これは、次の問題のいずれかが原因で発生する可能性があります。

  • データベースの設定が正しくありません。データベースの設定をもう一度確認してください。
  • データベース名が正しくありません。コードがテーブルを取得しようとしているデータベースが、データベース構成で指定したデータベースと同じでない可能性があります。
0
LaraCoder