首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel +存储过程:错误数据包出错

Laravel +存储过程:错误数据包出错
EN

Stack Overflow用户
提问于 2019-03-07 02:25:20
回答 4查看 3.7K关注 0票数 3

我试图从Laravel5.6调用一个存储过程,存储过程从数据库客户端运行良好。

代码语言:javascript
复制
CALL storedProcedure1(95, 2);

但当我用:

代码语言:javascript
复制
$db = DB::select('exec storedProcedure1(?,?)', array(
    $param1,
    $param2
));

我从拉拉上得到了以下信息:

“消息”:“数据包无序。预期1收到0.包size=131072",”异常“:"ErrorException",”文件“:”行“:202,

我该怎么做才能修好它?

EN

回答 4

Stack Overflow用户

发布于 2019-09-04 20:40:49

您可以编辑config/database.php文件并将其添加到数据库连接中。

代码语言:javascript
复制
'options'   => array(
   PDO::ATTR_EMULATE_PREPARES => true
),

警告:这可能不是最好的方法。

我在这里找到了这个解决方案:来源

票数 1
EN

Stack Overflow用户

发布于 2019-10-23 12:14:50

您可以在laravel 5.4中解决这个数据包大小问题。在数据库文件中编写这一行代码。在有问题的地方编写这行代码,比如在MYSQL中有问题,然后用MYSQL编写oR,然后在PGSQL中编写,对于其他数据库类型也要这样做。

代码语言:javascript
复制
'options'  => [
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', 
        PDO::ATTR_EMULATE_PREPARES => true,
    ]
票数 1
EN

Stack Overflow用户

发布于 2021-01-20 19:38:20

在Laravel中,我只想在整个应用程序中的一个地方调用一个存储过程。因此,我不想在Con图中设置PDO属性,以防止在全球范围内出现任何异常。因此,我创建了一个PDO连接并按以下方式实现了它:

代码语言:javascript
复制
        $pdo = DB::connection()->getPdo();
        $pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, true);
        $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
        $pdo->query('CALL my_stored_proc()');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55035101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档