最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
perl+mysql DBI执行UPDATE时返回了affected rows值错误
时间:2022-06-25 02:51:38 编辑:袖梨 来源:一聚教程网
问题:
这是一个2008年就有人踩过的坑 —— http://bugs.m**y*sql.com/bug.php?id=40673。
DBI的rows()方法以及do()方法返回的affected rows,都没有返回affected行数,而是返回匹配条件的行数。
这意味着,当我们连接MySQL连续执行3次”UPDATE table1 SET col1=’a’ WHERE id=1 LIMIT 1″时,3次DBI都会返回1。
但PHP和C的API都是头一次返回1,后面2次都返回0的。
解决方法:
还是求助CPAN找到了解答 —— https://rt.cpan.org/Public/Bug/Display.html?id=58595。
解决这个问题需要在new出DBI的时候显式关闭mysql_client_found_rows选项,像下面这样。
my $dbh =
DBI->connect( $mysql_data_source, $mysql_username, $mysql_passwd,
{ 'RaiseError' => 1, 'mysql_client_found_rows' => 0, } );
事后反思:
这个mysql_client_found_rows选项居然没有记录到DBI的文档里。
所以今天我才能在Google上看到如此多的抱怨,咒骂,吐槽和争执,从2008一直延续到2013。
DBI这么长的文档居然都还有遗漏事项,且给开发人员带来了如此大的困扰。
相关文章
- 棉花音乐app有哪些歌曲源 03-26
- 漫画软件最新推荐-资源超全的漫画app 03-26
- 如何绘制ai视觉立体圆锥 03-26
- 悟空浏览器网页直连入口-2026悟空浏览器网页版极速开启 03-26
- 洛克王国世界燃薪虫技能是什么-燃薪虫技能详解 03-26
- 樱花动漫app最新版下载安装-樱花动漫app官方正版免费下载 03-26