首页 > 解决方案 > Laravel +存储过程:错误数据包乱序

问题描述

我正在尝试从 laravel 5.6 调用存储过程,该存储过程在数据库客户端上可以正常工作。

CALL storedProcedure1(95, 2);

但是当我使用时:

$db = DB::select('exec storedProcedure1(?,?)', array(
    $param1,
    $param2
));

从 laravel 我得到以下信息:

“消息”:“数据包乱序。预期 1 收到 0。数据包大小 = 131072”,“异常”:“ErrorException”,“文件”:“D:\project\vendor\laravel\framework\src\Illuminate\Database \Concerns\ManagesTransactions.php", "行": 202,

我应该怎么做才能修复它?

标签: phpmysqllaravelstored-procedures

解决方案


在 Laravel 中,我只想在整个应用程序的一个地方调用一个存储过程。所以,我不想在 Configs 中设置 PDO 属性来防止全局级别的任何异常。因此,我创建了一个 PDO 连接并实现如下:

        $pdo = DB::connection()->getPdo();
        $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
        $pdo->query('CALL my_stored_proc()');

推荐阅读