laravel配置params选项如MYSQL_ATTR_USE_BUFFERED_QUERY等

绝了,laravel使用的是illuminate/database作为orm,我们用的swoole,在使用过程中报了如下错误:

SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active.  Consider using PDOStatement::fetchAll()

这个错误在网上一搜就能找到解决办法,就是给pdo加上一个params,‘MYSQL_ATTR_USE_BUFFERED_QUERY’ => true,嚯,但是laravel和illuminate/database的文档都没有说怎么加这个params。。。真就大无语事件发生。我还是不死心网上各种搜解决办法,当然是一无所获,不然也不会有这篇博客了。原本想省事偷懒的我终究还是不得不去看源码,终于让我找到了这个东西:
在这里插入图片描述
在这里插入图片描述
经过分析,这个玩意儿就是把配置中的options加载进去,虽然按照正常人的思维,这玩意儿要是叫params我直接就能试出来,根本不用看源码了的说。

    /**
     * Get the PDO options based on the configuration.
     *
     * @param  array  $config
     * @return array
     */
    public function getOptions(array $config)
    {
        $options = $config['options'] ?? [];

        return array_diff_key($this->options, $options) + $options;
    }

所以说,对于使用illuminate/database的框架来说,给pdo加选项就这这样的

'default' => [
            'fetch'     => PDO::FETCH_CLASS,
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'port'      => '3306',
            'username'  => '',
            'password'  => '',
            'database'  => 'test',
            'charset'   => 'latin1',
            'collation' => 'latin1_general_ci',
            'prefix'    => '',
            'strict'    => false,
            // 数据库连接参数
            'options'         => [
                'MYSQL_ATTR_USE_BUFFERED_QUERY' => true,
            ],
        ],

当然,你要是想也可以直接用原生的方法pdo连接,自然就不存在什么配置不好搞的问题了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值