在Laravel 5.1中,我们可以在config/queue.php
中设置队列连接配置。
QUEUE_DRIVER=database
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'expire' => 60,
],
但是,它只会使用config/database.php
中的默认数据库连接。
如果我有2个数据库,localhost中有1个默认数据库mysql1
,远程服务器中有1个数据库mysql2
,则队列jobs
表位于远程数据库{{1 ,如何配置Queue数据库驱动程序以使用远程mysql2
数据库?请注意,主App正在使用localhost中的默认数据库。
答案 0 :(得分:22)
您可以使用'connection'
中的queue.php
参数来设置正确的数据库连接(来自您在database.php
中定义的数据库连接)。
'database' => [
'connection' => 'mysql2'
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'expire' => 60,
],
我一直在寻找同样的东西,并在源代码中找到它。
注意:这不仅会读取此连接中的作业(运行队列时),还会将它们写入此连接(分派新作业时)。
答案 1 :(得分:5)
这里最好的答案对我不起作用,并不是说它不是一个与我不同的问题的最佳答案。我的问题是Laravel没有缓存我的配置设置。
进入文件\ config \ queue.php并更改默认驱动程序...
'default' => env('QUEUE_DRIVER', 'database'),
队列仍然在同步驱动程序上运行。
然后我检查了文件......
\bootstrap\cache\config.php
第30行我看到了......
'queue' =>
array (
'default' => 'sync',
...但要连接到数据库,它应该是......
'queue' =>
array (
'default' => 'database',
这解决了这个问题......
php artisan config:cache
运行config:cache commmand将config.php文件重写为当前的驱动程序设置。
答案 2 :(得分:1)
您可以在模型中设置$connection
变量。请注意,这只会影响Eloquent
个查询,并且不适用于Fluid Query Builder。
class Jobs extends Eloquent {
protected $connection = "database2"
}
这当然要求您在named
文件config/database.php
中建立第二个'database2' => [...]
连接。