0

mysql connector6.2.3.0(.net) を使用して C# から mysql 5.1 を接続しています。一度に 3 つのテーブルを挿入したいので、そのためにトランザクションを使用しています。 3 番目のテーブルの場合、トランザクションはロールバックされません。データは最初の 2 つのテーブルに挿入されます。

これは私のコードです...

MySqlDataAdapter da = new MySqlDataAdapter();
 DBUtil cUtil = new DBUtil();
 MySqlConnection mysqlCon=null;
 MySqlTransaction txn = null;

try
{
    mysqlCon = cUtil.getDbConnection();
    txn = mysqlCon.BeginTransaction();

    //1 
    sql = "insert into test_details()";
    da.InsertCommand = new MySqlCommand(sql, mysqlCon,txn);
    da.InsertCommand.ExecuteNonQuery();

    //2
    sql = "insert into task_details()";
    da.InsertCommand = new MySqlCommand(sql, mysqlCon,txn);
    da.InsertCommand.ExecuteNonQuery();

    sql = "select task_id from task_details where test_id='" + testId + "'";
    da.SelectCommand = new MySqlCommand(sql, mysqlCon,txn);
    dt1 = new System.Data.DataTable();
    da.Fill(dt1);
    string task_id = dt1.Rows[0]["task_id"].ToString();

    //3
    sql = "insert into test_evaluators()";
    da.InsertCommand = new MySqlCommand(sql, mysqlCon,txn);
    da.InsertCommand.ExecuteNonQuery();

    txn.Commit();
    mysqlCon.Close();
    da.Dispose();
}
catch (Exception e)
{
    txn.Rollback();
    mysqlCon.Close();
}

最初は、自動コミットを無効にしたいと思います...しかし、これをどこに設定する必要があるのか​​ わかりません...

これの何が悪いのか教えてください...

4

1 に答える 1

3

DBエンジンの問題であることがわかったので、使用できます

ALTER TABLE tablename ENGINE = innodb

ドキュメントを参照

于 2013-02-21T06:33:31.703 に答える