今天项目出现Wrong COM_STMT_PREPARE response size. Received 7
原本以为近期迁移数据库导致的 后来发现pdo连接配置有问题
需要在配置里加上这一项 PDO::ATTR_EMULATE_PREPARES => true
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
//.......
'options' => [PDO::ATTR_EMULATE_PREPARES => true,]
],
PDO::ATTR_STRINGIFY_FETCHES(提取的时候将数值转换为字符串)
PDO::ATTR_EMULATE_PREPARES(启用或禁用预处理语句的模拟)
做如下配置后mysql返回数据测试
$pdo = new PDO($dsn, $user, $pass, $options);
/* 实验1,结果 int 不转为 string */
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
/* 实验2,结果 int 转为 string */
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
/* 实验3,结果 int 转为 string */
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
/* 实验4,结果 int 转为 string */
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);