PHP Artisan 抛出奇怪的错误 [42s02]
PHP Artisan throwing strange error [42s02]
我在尝试使用 PHP Artisan 时遇到奇怪的错误。我不知道原因,甚至不知道是哪个文件引起的。
就在几分钟前,我 运行 php artisan migrate:reset
清除了我数据库中的所有 table。工作正常。
然后我对一个与 "stages" table 完全无关的文件进行了更改,当我尝试 运行 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" 的 table 添加到数据库,artisan 不会立即失败,它会尝试迁移 table,然后当它到达 table 阶段时失败,它说失败是因为 "stages" 已经存在。
我什至不明白为什么 artisan 在我试图迁移我的 table 时尝试执行 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);
}
}
问题是由我在 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;
在文件的顶部
我在尝试使用 PHP Artisan 时遇到奇怪的错误。我不知道原因,甚至不知道是哪个文件引起的。
就在几分钟前,我 运行 php artisan migrate:reset
清除了我数据库中的所有 table。工作正常。
然后我对一个与 "stages" table 完全无关的文件进行了更改,当我尝试 运行 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" 的 table 添加到数据库,artisan 不会立即失败,它会尝试迁移 table,然后当它到达 table 阶段时失败,它说失败是因为 "stages" 已经存在。
我什至不明白为什么 artisan 在我试图迁移我的 table 时尝试执行 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);
}
}
问题是由我在 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;
在文件的顶部