我想创建动态调度作业,因此我在Kernel.php中使用了如下模型
summarise
它在本地运行,但是在部署到生产环境时会引发以下错误:
protected function schedule(Schedule $schedule) {
$tasks = \App\Model\Task::where('enabled', true)->get();
}
如果我从>> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
In Connection.php line 664:
could not find driver (SQL: select * from `tasks` where `enabled` = 1) `
中删除了模型查询并定义了静态计划,它会按预期工作。但是我需要在Schedule中查询数据库以动态设置它。
我检查了生产kernel.php
,发现php.ini
已启用。
有人可以指导我在生产环境中缺少什么吗?
答案 0 :(得分:0)
检查生产中的.env
设置,是否定义了DB_CONNECTION=mysql
?
App\Console\Kernel.php
也不是查询某些内容的好地方。
尝试提取该逻辑以拥有自己的命令,使用命令php artisan make:command TaskCommand
,您可以简单地创建自己的命令,然后对其进行调度
$schedule->command('signature_from:task_comand')->dailyAt('9:00');
有非常好的文档here
答案 1 :(得分:0)
我做了更多研究,发现此问题仅在使用docker构建时发生。我在config.yml中添加了pdo pdo_mysql和所需的数据库环境变量,现在它可以工作了。
https://github.com/docker-library/php/issues/62#issuecomment-70306737