最初に誤って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');
}
}
この苛立たしい問題を解決するのを手伝ってください。よろしくお願いします。
この問題が発生し、移行ファイルが原因ではない場合は、2つの理由が考えられます。
laravelが開始されると、ServiceProvidersのブート関数とオートロードされたカスタムヘルパー関数が最初にロードされるため、すべてのphp artisan
コマンドは「ベーステーブルまたはビューが見つかりません」エラーを生成します。
この時点で行うべきことは、存在しないテーブルをクエリしているクエリをコメントアウトし、php artisan serve
を実行してから、php artisan migrate
を実行することです。次に、それらの行のコメントを解除して保存すると、すべてが正常に機能するはずです。
@devkが提案したように、問題が発生した場所を正確に示すlaravelログファイルを確認することをお勧めします。解決策を見つけることになりました。これについては、忘れないでください オンにするデバッグモード。
これらの移行をロールバックすると、categories
テーブルとarticles
テーブルが削除されます。したがって、migrate
コマンドをもう一度実行するだけです。
php artisan migrate
私にとって、このエラーはスケジュールされたタスク in laravelデータベースルックアップを伴うために発生していました。スケジュールされたものからlaravel/app/Console/Kernel.php
でそのルックアップをコメントアウトすることによってタスク、データベースを再度移行することができました。
これは、次の問題のいずれかが原因で発生する可能性があります。