私のテーブルはInnoDBは、(TABLE xxx
をCREATE SHOWから見て)と私の取引だった場合ロールバックしていない、あなたは何を提案しますか?
CREATE TABLE `EarningCode` (
`ID` int(11) NOT NULL auto_increment,
`EarningCode` varchar(16) collate utf8_unicode_ci NOT NULL,
`Description` varchar(255) collate utf8_unicode_ci NOT NULL,
`DateEffective` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`Rate` float NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1239 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
これはユニットテストの一部です:行は、DBに挿入されていないことを確認する必要があり
protected function setUp()
{
global $db;
$db->beginTransaction();
// Insert this tested object into db.
}
と涙ダウン法(それぞれ:私はトランザクションの独立を開始する設定方法を有しますテストがこのテストクラスで実行されるときに、setUp/tearDownのペアが実行されるため、dbテーブルをいっぱいにする重複は必要ありません。
protected function tearDown()
{
global $db;
$db->rollBack();
}
私が実行されたものをSQLがチェックしている、と私はその自動コミットが挿入トランザクションが開始されたときにfalseに設定され、ロールバックした後、trueに切り替えますが、行が残っていることがわかります。
あなたのDBはMyISAMテーブルを使用していますか?彼らはトランザクションをサポートしていません。トランザクションサポートが必要な場合は、InnoDBテーブルを使用する必要があります。 – nos
はい、私はMyISAMテーブルを使用しています。 InnoDBテーブルに変更しました。ありがとう。 – Billy