Laravel 5.3为queue:work artisan命令获取null错误的beginTransaction()

时间:2016-11-12 14:45:30

标签: laravel-5.3 jenssegers-mongodb

当我试图运行 php artisan queue:work 命令时,我收到此错误:

[Symfony\Component\Debug\Exception\FatalErrorException]
Call to a member function beginTransaction() on null

我已经在互联网上检查了几乎所有可用的错误帮助,但我没有得到任何解决方案。

我不确定这是否与我正在使用的这个包有关。

https://github.com/jenssegers/laravel-mongodb

我猜这可能是因为其他人也遇到了这个错误,但遗憾的是没有任何回复。

https://github.com/jenssegers/laravel-mongodb/issues/964

日志中的详细错误:

[2016-11-12 20:18:45] local.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Call to a member function beginTransaction() on null' in C:\wamp\www\blog\vendor\laravel\framework\src\Illuminate\Database\Connection.php:611
Stack trace:
#0 {main}  

任何帮助都将不胜感激。

提前致谢。

谢谢,

Parth vora

3 个答案:

答案 0 :(得分:1)

我找到了这个问题。

我没有按照包的队列配置。

https://github.com/jenssegers/laravel-mongodb#queues

只需按照正确的说明进行操作即可。

答案 1 :(得分:1)

我也遇到了DB::beginTransaction()方法的问题。以下代码段解决了我的问题

$session = DB::getMongoClient()->startSession();
$session->startTransaction();
try {
    // Perform actions.
    $session->commitTransaction();
} catch(Exception $e) {
    $session->abortTransaction();
}

感谢this answer


顺便说一句,我使用的是MongoDB 4.0.3版,并在Laravel 5.7和5.8版上进行了测试

答案 2 :(得分:0)

我研究并意识到它与MySQL / MariaDB被“杀死以释放内存”有关。因此,我在cent os rhel 7上使用sudo shutdown -r重新启动了服务器,并使用sudo systemctl restart mariadb启动了mysql / mariadb。