2011年4月25日星期一

Re: [PerlChina] DBD::mysql 的 TRANSACTION 問題

�大�,你�笑了,我只是一名凡人,不可能掌握所有的智�,所以我也努力在�找解�的方法,找� DBD::mysql 的文件,也在�上找�有同���描述的文章,可能我集中在找DBD::mysql 的描述 而�有找 myisam 的部份,因此也找不到有��料,因此我把代��成使用PgSQL���是否我的代���,�是DBI 的bugs,��在 PgSQL 中�有����,所以把���定了在 MySQL的部份,然後再找文章,但也找不到有�的�料,我�得perlchina��上��平台其�立的宗旨及目也是��助��及解�����放一些有 ���,所以最後才把��放上perlchina中��各先�,希望期待各位先�能伸出能�石成金的手指,指�晚�,我避免耽�各先�的��光 �,因此把有�代��化,把版本描述得比���,如耽�了大�的��光�,沾污了大�的眼睛,十分抱歉,����!
-------- Original Message  --------
Subject: Re: [PerlChina] DBD::mysql 的 TRANSACTION ��
From: 万朝伟 <wanmyome@gmail.com>
To: Anthony WU <anthonywuy2k@gmail.com>
Cc: "perlchina@googlegroups.com" <perlchina@googlegroups.com>
Date: 25/4/2011 22:31
更期待点石成金的手指
在 2011-4-25,22:10,Anthony WU <anthonywuy2k@gmail.com> 写道:
�什�有�趣呢………
-------- Original Message  --------
Subject: Re: [PerlChina] DBD::mysql 的 TRANSACTION ��
From: 万朝伟 <wanmyome@gmail.com>
To: perlchina@googlegroups.com <perlchina@googlegroups.com>
Cc: "perlchina@googlegroups.com" <perlchina@googlegroups.com>
Date: 25/4/2011 22:06
我对您解决问题的思路很感兴趣
在 2011-4-25,21:54,smallfish <smallfish.xy@gmail.com> 写道:
myisam是不支持事务的
--


2011/4/25 Anthony WU <anthonywuy2k@gmail.com>

高手!�成InnoDB後��有��

-------- Original Message  --------
Subject: Re: [PerlChina] DBD::mysql 的 TRANSACTION ��
From: silent <silent2600@gmail.com>
To: perlchina@googlegroups.com
Date: 25/4/2011 21:44
myisam ?

在 2011年4月25日 下午9:33,Anthony WU <anthonywuy2k@gmail.com>写 道:
��有�有前�使用� DBD::mysql 的 TRANSACTION 模式?
我在����� DBD::mysql 中的 TRANSACTION �生不了�有的 rollback 功能。
而且��� AutoCommit、begin_work 的�用中�有�生 $@ �出 又或 $dbh->errstr �息
在不修改原有代�而只修改 DSN 的 driver name 成 Pg,在同�的 table ��中 PostgreSQL Server 下��有��
以下是我所用的最��的��代�:

#!/usr/bin/perl
#perl v5.12.3
use DBI;
use DBI::DBD;

#my $dbh=DBI->connect ('dbi:Pg:database=TEST;host=localhost', 'root' , '', {AutoCommit => 1});
#printf ("DBD::Pg::VERSION: %s\n",  $DBD::Pg::VERSION);                   #DBD::Pg::VERSION: 2.17.1
#mysql server 5.1.55-1

my $dbh=DBI->connect ('dbi:mysql:database=TEST;host=localhost', 'root' , '', {AutoCommit => 1});
printf ("DBD::mysql::VERSION: %s\n",  $DBD::mysql::VERSION);           #DBD::mysql::VERSION: 4.017
#postgresql server 8.4.7-1
printf ("DBI::DBD::VERSION: %s\n",  $DBI::DBD::VERSION);                  #DBI::DBD::VERSION: 12.014120
printf ("DBI::VERSION: %s\n",  $DBI::VERSION);                                        #DBI::VERSION: 1.613

$dbh->begin_work ();
$sth = $dbh->prepare ("INSERT INTO messages (title, messages) VALUES(?, ?);");
$sth->execute ("TITLE", "MESSAGES");
$dbh->rollback ();
#$dbh->commit ();
$dbh->disconnect ();
exit;

没有评论: