1

设置一个队列以闲置以处理传入的数据,有时我会收到关于 mysql 服务器的可怕错误已经消失。有没有人对如何在 Yii 中优雅地解决这个问题有任何建议,当出现错误时,我可以重新启动数据库连接并继续。

不要太在意mysql设置来增加wait_time,因为它可以帮助最小化问题但不能解决它。

编辑 这可能看起来很有趣/悲伤,这取决于你如何看待它......我在我正在运行的查询中添加了@符号,并且它们被 try-catch 捕获......如果出现错误代码,我会重置数据库连接在范围内[2006],否则应用程序返回错误......希望这看起来是一个合法的答案......

4

2 回答 2

3

我搜索了很多关于这个问题,当你使用 Yii 命令时,这会发生在 Yii 中。如果 autoConnect 未设置为 false,我不知道为什么 Yii 会为每个 AR 创建一个新连接,这意味着要重用打开的连接。

    'db' => array(
         // Reuse a connections and not exceed the number of connections to got error 2006
        'autoConnect' => false,
         // If you are using a transactions and persistent connections
        'attributes' => array(
            PDO::ATTR_PERSISTENT => TRUE,
            PDO::ATTR_AUTOCOMMIT => FALSE
        )
    ),
于 2014-12-07T19:29:36.043 回答
2

我通过添加解决了

max_allowed_packet = 128M
wait_timeout=3600
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

在mysql的my.cnf中

于 2014-12-08T05:15:48.217 回答