繁体   English   中英

QueryException:常规错误:1没有这样的表:{table_name}(SQL:从“ {table_name}”中选择*)

[英]QueryException: General error: 1 no such table: {table_name} (SQL: select * from “{table_name}”)

  • Laravel版本:5.7
  • PHP版本:7.2
  • 数据库驱动程序:sqlite
  • 数据库:内存

在PHPUnit上进行的所有测试都可以正常工作。 但是,当我在AppServiceProvider添加View::share ,所有PHPUnit测试都失败了。

AppServiceProvider.php

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        \View::share('categories', \App\Models\Category::all());
    }
}

错误

Illuminate \\ Database \\ QueryException:SQLSTATE [HY000]:常规错误:1没有这样的表:Categories(SQL:select * from“ categories”)

我已经在所有测试中使用了RefreshDatabase

请指导我,我该如何解决。 我应该在Laravel应用中的何处调用View::share ,所以所有测试都应该通过。

发生这种情况的原因可能是数据库甚至不存在,并且提供程序启动假定数据库/表已经启动并正在运行。

通过包裹将其固定得更多

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
       if(\Schema::hasTable('categories'){
        \View::share('categories', \App\Models\Category::all());
       }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM