Skip to content

MySQL_Session.cpp:2452:handler(): [ERROR] RECEIVED AN UNKNOWN COMMAND: 28 -- PLEASE REPORT A BUG #2812

Open
@beebol

Description

@beebol

proxysql version:
ProxySQL version 1.4.15-1-g61bc777, codename Truls

2020-05-20 15:59:41 MySQL_Session.cpp:2887:handler(): [ERROR] Detected a broken connection during query on (1,10.200.131.4,3306) , FD (Conn:43 , MyDS:43) : 2057, The number of parameters in bound buffers differs from number of columns in resultset
2020-05-20 15:59:43 MySQL_PreparedStatement.cpp:315:update_metadata(): [WARNING] Updating metadata for stmt 1 , user sbtest_rw, query SELECT * FROM sbtest1 WHERE id =?
2020-05-20 15:59:43 MySQL_Session.cpp:2452:handler(): [ERROR] RECEIVED AN UNKNOWN COMMAND: 28 -- PLEASE REPORT A BUG

replay process:
prepare.php

<?php
$dsn      = 'mysql:dbname=sbtest;host=10.200.131.3;port=6033';
$user     = 'sbtest_rw';
$password = 'sbtest_rw_123';

try {
    $params = [
        PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8", 
        PDO::ATTR_EMULATE_PREPARES   => false, 
    ];
    $db = new PDO($dsn, $user, $password, $params);

} catch (PDOException $e) {
    echo $e->getMessage();
    exit;
}

$sth = $db->prepare('SELECT * FROM sbtest1 WHERE id =?');
$sth->execute([28]);
$res1 = $sth->fetchAll(PDO::FETCH_ASSOC); 
print_r($res1);
?>

table :

CREATE TABLE `sbtest1` (
  `id` int(10) unsigned NOT NULL,
  `k` int(10) unsigned NOT NULL DEFAULT '0',
  `c` char(120) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
  `pad` char(60) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
  `d` varchar(500) COLLATE utf8mb4_bin NOT NULL DEFAULT 'a',
  PRIMARY KEY (`id`),
  KEY `idx_d` (`d`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin

ddl:

alter table sbtest1 add column daa varchar(2) not null default 'd' after k;

php info:

php-pdo-7.2.31-1.el7.remi.x86_64
php-7.2.31-1.el7.remi.x86_64

php prepare.php:

PHP Warning:  PDOStatement::execute(): MySQL server has gone away in /data/dbadir/20200520/prepare.php on line 21
PHP Warning:  PDOStatement::execute(): Error reading result set's header in 
/data/dbadir/20200520/prepare.php on line 21
Array
(
)

php prepare.php:

PHP Warning:  Packets out of order. Expected 1 received 13. Packet size=5 in 
/data/dbadir/20200520/prepare.php on line 22
Array
(
)

connect proxysql:
PDO::ATTR_EMULATE_PREPARES => false ---> Error
PDO::ATTR_EMULATE_PREPARES => true ---> OK
SELECT * ---> SELECT id,pad,c ---->OK (ATTR_EMULATE_PREPARES=true/false)

connect MySQL:
PDO::ATTR_EMULATE_PREPARES => false ---> OK
PDO::ATTR_EMULATE_PREPARES => true ---> OK
SELECT * ---> SELECT id,pad,c ---->OK (ATTR_EMULATE_PREPARES=true/false)

Why when ATTR_EMULATE_PREPARES is false, does proxysql return an ERROR?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions