【问题标题】:PHP Artisan throwing strange error [42s02]PHP Artisan 抛出奇怪的错误 [42s02]
【发布时间】:2015-10-25 23:14:34
【问题描述】:

我在尝试使用 PHP Artisan 时遇到了一个奇怪的错误。我不知道原因,也不知道是哪个文件造成的。

就在片刻之前,我运行php artisan migrate:reset 来清除数据库中的所有表。工作正常。

然后我对一个与“stages”表完全无关的文件进行了更改,当我尝试运行php artisan migrate 时,它会抛出一个错误:

SQLSTATE[42S02]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid object name 'stages'. (SQL: select * from [stages] where [stages].[deleted_at] is null order by [opord] asc)

无论我尝试做什么,它都会引发该错误,即使只是输入 php artisan 也会导致该致命错误。

另外,如果我手动将一个名为“stages”的表添加到数据库中,artisan 不会立即失败,它会尝试迁移表,然后在到达 stage 表时失败,并且它说它失败了,因为“阶段”已经存在。

我什至不明白为什么 artisan 在我只是尝试迁移我的表时尝试执行 select 语句;我特别不明白为什么单独运行php artisan 命令时会发生这种情况。

编辑:

我将问题追溯到我添加到app\Providers\AppServiceProvider的一些代码

public function boot(){
    View::share('nav_stages', Stage::opord()->get());
}

我发现了一个关于 how to check if a table exists 的 SO 问题,我目前正在努力解决这个问题:

public function boot(){
    if (Schema::hasTable('stages'))
    {
        View::share('nav_stages', Stage::opord()->get());
    }else{
        View::share('nav_stages', null);
    }
}

【问题讨论】:

    标签: php laravel laravel-artisan


    【解决方案1】:

    问题是由我在AppServiceProvider.php 中的一些代码引起的等)。

    我换了

    public function boot(){
        View::share('nav_stages', Stage::opord()->get());
    }
    

    public function boot(){
        if (Schema::hasTable('stages'))
        {
            View::share('nav_stages', Stage::opord()->get());
        }else{
            View::share('nav_stages', null);
        }
    }
    

    并添加

    use Illuminate\Support\Facades\Schema;
    

    在文件的顶部

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-19
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 2017-07-25
      • 2018-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多