简体   繁体   English

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

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

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

All testing on PHPUnit was working completely fine. 在PHPUnit上进行的所有测试都可以正常工作。 But when I added View::share in AppServiceProvider then all the PHPUnit tests failed. 但是,当我在AppServiceProvider添加View::share ,所有PHPUnit测试都失败了。

AppServiceProvider.php AppServiceProvider.php

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

Error 错误

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

I have already used RefreshDatabase in my all test. 我已经在所有测试中使用了RefreshDatabase

Please guide me, how can I fix this. 请指导我,我该如何解决。 Where should I call View::share in Laravel app so, all tests should pass. 我应该在Laravel应用中的何处调用View::share ,所以所有测试都应该通过。

This is happening due to the fact that the database doesnt even exists perhaps and provider boot is assuming that database/table its up and running. 发生这种情况的原因可能是数据库甚至不存在,并且提供程序启动假定数据库/表已经启动并正在运行。

Secure it a bit more by wrapping it 通过包裹将其固定得更多

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.

相关问题 Select * from table_name where column_nameِ = 'value' - Select * from table_name where column_nameِ = 'value' SELECT * FROM table_name ORDER BY column_name? - SELECT * FROM table_name ORDER BY column_name? SELECT id FROM table_name WHERE column = $variable - SELECT id FROM table_name WHERE column = $variable SET @var:= SELECT * FROM table_name:是可能的 - SET @var := SELECT * FROM table_name: is it possible 简单的'SELECT字段FROM table_name其中TO =“$ to”'返回MySQL错误1064 - Simple 'SELECT field FROM table_name where TO = “$to”' is returning MySQL error 1064 Silverstripe table_name未设置为类 - Silverstripe table_name not set for class 将数据作为php变量插入table_name - Inserting data into table_name as php variable 连接被拒绝 SQL:select * from information_schema.tables where table_schema = firstdb and table_name = migrations and table_type = 'BASE TABLE - Connection refused SQL: select * from information_schema.tables where table_schema = firstdb and table_name = migrations and table_type = 'BASE TABLE 选择列 FROM table_name WHERE username=$_SESSION['username'] 不起作用 - Select column FROM table_name WHERE username=$_SESSION['username'] not working get_results("select * from table_name where id IN($array)") 但它假定 $array 为 "Array" - get_results("select * from table_name where id IN($array)") but it assumes $array as "Array"
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM