【发布时间】:2017-12-06 06:00:56
【问题描述】:
我有一张名为dc_user_meta 的表,我创建了一个工匠命令并将其安排在kernel.php 中。克隆存储库后,当我尝试运行 PHP artisan migrate 时,我收到此错误。
[Illuminate\Database\QueryException]
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'database.dc_user_meta' doesn't exist (SQL: select * from `dc_user_met
a` where `meta_key` = usage_in_days)
不仅php artisan migrate,而且我根本无法运行任何工匠命令!我不知道为什么 PHP 每次尝试执行任何工匠命令时都会调用 schedule 方法。
在这种情况下,我可以做些什么来解决这个错误,就像这样在schedule 方法中覆盖我的逻辑。
if(Schema::hasTable('dc_user_meta')){
// Code here
}
但从长远来看,我认为这并不好。解决此错误的正确方法是什么?
更新:
我只是尝试像这样覆盖kernel.php中的命令调用,但仍然没有成功!
if(Schema::hasTable('dc_user_meta')){
$schedule->command('usage:update')->daily();
}
更新: 我得到了解决方案。但我不认为这是问题的答案。它解决了我的问题,但我认为这不是标准解决方案。我只是像这样被Command login覆盖。
if(Schema::hasTable('dc_user_meta')){
// Command Logic
}
关于为什么 Laravel 使用每个 artisan 命令调用 schedule() 的任何具体答案,以及如果发生这种情况如何以标准方式解决错误!
【问题讨论】:
-
我无法重现它(L5.4)我做了一个命令调用一个不存在的表,但调用它时只得到一个错误。
-
@cbaconnier 在数据库中创建表,然后尝试运行“php artisan migrate:refresh”
-
你使用的是哪个版本的 Laravel?
-
我使用的是 laravel5.4
标签: php laravel laravel-5 cron