萬大師,你見笑了,我只是一名凡人,不可能掌握所有的智識,所以我也努力在尋
找解決的方法,找過 DBD::mysql 的文件,也在網上找過有同樣問題描述的文章,
可能我集中在找DBD::mysql 的描述 而沒有找 myisam 的部份,因此也找不到有關
資料,因此我把代碼轉成使用PgSQL來測試是否我的代碼寫錯,還是DBI 的bugs,
發現在 PgSQL 中沒有這個問題,所以把問題鎖定了在 MySQL的部份,然後再找文
章,但也找不到有關的資料,我覺得perlchina這網上組織平台其設立的宗旨及目
也是個幫助討論及解決問題並發放一些有 關資訊,所以最後才把問題放上
perlchina中詢問各先賢,希望期待各位先賢能伸出能點石成金的手指,指點晚
輩,我避免耽誤各先賢的寶貴光 蔭,因此把有關代碼簡化,把版本描述得比較細
緻,如耽誤了大師的寶貴光蔭,沾污了大師的眼睛,十分抱歉,懇請見諒!
-------- Original Message --------
Subject: Re: [PerlChina] DBD::mysql 的 TRANSACTION 問題
From: 万朝伟 <[email protected]>
To: Anthony WU <[email protected]>
Cc: "[email protected]" <[email protected]>
Date: 25/4/2011 22:31
更期待点石成金的手指
在 2011-4-25,22:10,Anthony WU <[email protected]
<mailto:[email protected]>> 写道:
為什麼有興趣呢………
-------- Original Message --------
Subject: Re: [PerlChina] DBD::mysql 的 TRANSACTION 問題
From: 万朝伟 <[email protected] <mailto:[email protected]>>
To: [email protected] <mailto:[email protected]>
<[email protected] <mailto:[email protected]>>
Cc: "[email protected] <mailto:[email protected]>"
<[email protected] <mailto:[email protected]>>
Date: 25/4/2011 22:06
我对您解决问题的思路很感兴趣
在 2011-4-25,21:54,smallfish <[email protected]
<mailto:[email protected]>> 写道:
myisam是不支持事务的
--
blog: http://chenxiaoyu.org
2011/4/25 Anthony WU <[email protected]
<mailto:[email protected]>>
高手!轉成InnoDB後則沒有問題
-------- Original Message --------
Subject: Re: [PerlChina] DBD::mysql 的 TRANSACTION 問題
From: silent <
<mailto:[email protected]>[email protected]
<mailto:[email protected]>>
To: [email protected] <mailto:[email protected]>
Date: 25/4/2011 21:44
myisam ?
在 2011年4月25日 下午9:33,Anthony WU <[email protected]
<mailto:[email protected]>>写 道:
請問有沒有前輩使用過 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;
--
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 [email protected]。
要取消订阅此网上论坛,请发送电子邮件至 [email protected]。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。