louislivi / SMProxy

Swoole MySQL Proxy 一个基于 MySQL 协议,Swoole 开发的MySQL数据库连接池。 A MySQL database connection pool based on MySQL protocol and Swoole.
https://smproxy.louislivi.com
MIT License
1.78k stars 258 forks source link

预处理语句错误 #54

Closed guanlh closed 4 years ago

guanlh commented 5 years ago

Describe Your Environment (描述你的环境)

How to Reproduce the Problem? (如何重现问题)

1.TP5 框架使用smproxy链接数据库进行插入或者修改操作就会出现 SQLSTATE[HY000]: General error: 1149 HY000Unknown prepared statement handler (2) given to mysql_stmt_precheck 错误

  1. 如果在执行这个sql语句的前面先进行一个select操作,则恢复正常。 3.这个情况只有当MySQL版本是8.0才会出现,5.7 是正常。

    Expected Behavior (预期行为)

...

Actual Behavior (实际行为)

...

More Information (更多信息)

...

louislivi commented 5 years ago

能发份能够复现的脚步吗,我这边测试未测出此情况。

<?php
        $start = microtime(true);
        var_dump($start);
        var_dump(Db::table('test')->insert(['id'=> 2,'name'=>'test','desc' => 'desc']));
        var_dump(Db::table('test')->where('id', 2) ->update(['desc'=> 'desc2']));
        print_r(microtime(true)-$start);exit;
louislivi commented 5 years ago

@Sebastianooooooo 这个问题我这边复现了,是因为php7.3+ 的缘故,我这边会根据解决这个问题。

xiaoshenxianLy commented 4 years ago

请问解决了吗

louislivi commented 4 years ago

@xiaoshenxianLy 你可以试试最新master分支上的代码,这个问题很奇怪,我这边后续没法复现,目前看来不是php版本的问题了

louislivi commented 4 years ago

c3baa1c5d6c5f297e4ed5d320faf118886fd6b01