【问题标题】:QueryException: General error: 1 no such table: {table_name} (SQL: select * from "{table_name}")QueryException: 一般错误: 1 no such table: {table_name} (SQL: select * from "{table_name}")
【发布时间】:2018-12-31 16:36:41
【问题描述】:
  • 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 no such table: categories (SQL: select * from "categories")

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

请指导我,我该如何解决这个问题。在 Laravel 应用程序中我应该在哪里调用 View::share,所以所有测试都应该通过。

【问题讨论】:

  • 重新运行 php artisan migrate 并仔细检查数据库中的表。那么请张贴你得到的。

标签: php laravel laravel-5 phpunit


【解决方案1】:

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

包裹起来更安全

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

【讨论】:

    猜你喜欢
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 2021-11-26
    • 2013-06-01
    • 2012-03-16
    相关资源
    最近更新 更多