无法启动Laravel,我得到“基表或视图未找到”错误
首先,我错回滚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');
}
}
请帮我解决这个令人沮丧的问题。所有的答案都非常感谢,提前感谢。
如果遇到此问题,并且它不是由迁移文件引起的,那么很可能是因为2种可能的原因而发生的。
- 检查ServiceProviders,如果它包含了查询不存在的表的查询'开机功能。
- 检查您是否创建了自定义帮助函数并自动加载了composer.json文件中的辅助函数。如果自定义帮助函数包含正在查询不存在的表的查询,则会导致此错误。
由于ServiceProviders的启动函数和自动加载的自定义帮助函数是在启动laravel时首先加载的,所有php artisan
命令都会生成“Base table or view not found”错误。
此时您应该做的是注释掉那些查询不存在的表的查询,然后运行php artisan serve
然后运行php artisan migrate
。然后取消注释这些行,保存它,一切都应该正常工作。
由于@devk建议最好检查laravel日志文件,这些文件完全指向问题发生的位置。它导致我找到一个解决方案。 对于这个不要忘记Turn on debug mode.
当您回滚这些迁移时,您已删除categories
和articles
表。因此,只要再次运行migrate
命令:
php artisan migrate
我认为这是他得到错误的地方。 “首先我错误地回滚了2次迁移,然后我运行了'php artisan migrate'命令,并且出现以下错误:” – devk
感谢您的回答。但正如我上面提到的,我已经尝试过了,而且我得到了同样的错误。 –
@MahammadIsgandarli你有没有使用'categories'表的其他迁移(也许你想添加一列或其他东西)? –
这可能发生在以下任何问题,是由于:
- 您的数据库设置不正确。请再次检查您的数据库 设置。
- 数据库名称不正确。可能是您的代码为 的数据库试图从您的数据库配置中获取表与您提到的数据库 不相同。
对于我来说,这个错误是因为在laravel,涉及数据库查找一个计划任务的发生。通过在我的计划任务中注释掉laravel/app/Console/Kernel.php
中的查找,我能够再次迁移我的数据库。
做'composer dumpautoload'然后尝试再次迁移。 – aynber
如果您试图删除没有'dropIfExists()'的表,或者当您引用“类别”表的外键时,通常会出现此错误 - 您未在展示代码中执行此操作。你可能试图在其他迁移中引用'categories'表吗?也许你试图在后面的一些迁移中将外键添加到你的'parent_id'(一个猜测)? – devk
对于调试进一步检查app/storage/logs/laravel.log文件的结尾 - 哪个指向问题发生的地方 – devk