2017-02-28 90 views
6

首先,我错回滚2迁移,然后我跑php artisan migrate命令,我得到了以下错误:无法启动Laravel,我得到“基表或视图未找到”错误

[Illuminate\Database\QueryException] SQLSTATE[42S02]: Base table or view not found: 1146 Table 'exercise1.categories' doesn't exist (SQL: select * from categories其中parent_id = 0 ) [PDOException] SQLSTATE [42S02]:基表或视图未找到:1146表 'exercise1.categories' 不存在

然后我停止Laravel。之后,当我运行启动Laravel的命令php artisan serve时,我得到相同的错误。 这里有两个迁徙我已经回滚:

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'); 
     } 
    } 

请帮我解决这个令人沮丧的问题。所有的答案都非常感谢,提前感谢。

+0

做'composer dumpautoload'然后尝试再次迁移。 – aynber

+0

如果您试图删除没有'dropIfExists()'的表,或者当您引用“类别”表的外键时,通常会出现此错误 - 您未在展示代码中执行此操作。你可能试图在其他迁移中引用'categories'表吗?也许你试图在后面的一些迁移中将外键添加到你的'parent_id'(一个猜测)? – devk

+0

对于调试进一步检查app/storage/logs/laravel.log文件的结尾 - 哪个指向问题发生的地方 – devk

回答

8

如果遇到此问题,并且它不是由迁移文件引起的,那么很可能是因为2种可能的原因而发生的。

  1. 检查ServiceProviders,如果它包含了查询不存在的表的查询'开机功能。
  2. 检查您是否创建了自定义帮助函数并自动加载了composer.json文件中的辅助函数。如果自定义帮助函数包含正在查询不存在的表的查询,则会导致此错误。

由于ServiceProviders的启动函数和自动加载的自定义帮助函数是在启动laravel时首先加载的,所有php artisan命令都会生成“Base table or view not found”错误。

此时您应该做的是注释掉那些查询不存在的表的查询,然后运行php artisan serve然后运行php artisan migrate。然后取消注释这些行,保存它,一切都应该正常工作。

由于@devk建议最好检查laravel日志文件,这些文件完全指向问题发生的位置。它导致我找到一个解决方案。 对于这个不要忘记Turn on debug mode.

4

当您回滚这些迁移时,您已删除categoriesarticles表。因此,只要再次运行migrate命令:

php artisan migrate 
+0

我认为这是他得到错误的地方。 “首先我错误地回滚了2次迁移,然后我运行了'php artisan migrate'命令,并且出现以下错误:” – devk

+0

感谢您的回答。但正如我上面提到的,我已经尝试过了,而且我得到了同样的错误。 –

+0

@MahammadIsgandarli你有没有使用'categories'表的其他迁移(也许你想添加一列或其他东西)? –

0

这可能发生在以下任何问题,是由于:

  • 您的数据库设置不正确。请再次检查您的数据库 设置。
  • 数据库名称不正确。可能是您的代码为 的数据库试图从您的数据库配置中获取表与您提到的数据库 不相同。
2

对于我来说,这个错误是因为在laravel,涉及数据库查找一个计划任务的发生。通过在我的计划任务中注释掉laravel/app/Console/Kernel.php中的查找,我能够再次迁移我的数据库。

相关问题