【问题标题】:laravel-8 getting error message "Packets out of order. Expected 1 received 4." while running stored procedure with "DB:select" on aws rds mysql dblaravel-8 收到错误消息“数据包乱序。预期 1 收到 4。”在 aws rds mysql db 上使用“DB:select”运行存储过程时
【发布时间】:2021-11-08 22:12:19
【问题描述】:

在我的 laravel 8 应用程序中,我通过以下代码调用 mysql 存储过程:

$query = DB::select("call rule_sets(?, ?)",[(int)$dataset_id, Auth::user()->id]);
$query_result = $query[0];

代码 sn-p 在我的本地环境中运行良好。然而,在我的生产服务器(aws ec2 实例 + aws rds mysql 数据库)中,它抛出 QueryException 并带有错误消息 packets out of order. Expected 1 received 4. Packet size=7 (SQL: call rule_sets(1, 1))。奇怪的是,当我直接从与同一生产数据库连接的任何数据库客户端运行此存储过程时,它可以完美运行。我尝试通过 php pdo 语句调用存储过程,但它仍然给出相同的错误消息。我也尝试在aws rds 上手动增加数据包大小,但没有奏效。

谁能告诉我这里有什么问题?

【问题讨论】:

    标签: mysql laravel stored-procedures amazon-rds


    【解决方案1】:

    这可能对你有用。尝试将您的config/database.php 文件更新为mysql下的选项数组。

    'options'   => [
                    PDO::ATTR_EMULATE_PREPARES => true
                ],
    

    您也可以尝试更新您的my.cnf 文件以增加max_allowed_packet 的大小。

    max_allowed_packet=300M
    

    【讨论】:

      猜你喜欢
      • 2020-11-27
      • 1970-01-01
      • 2020-06-22
      • 2023-01-15
      • 2020-09-28
      • 2019-03-02
      • 2013-10-23
      • 1970-01-01
      相关资源
      最近更新 更多