MySqlConnection cn = new MySqlConnection(
                "server=127.0.0.1;user id=root;Password=root;persist security info=True;database=elevator");
            cn.Open();            MySqlCommand cmd = new MySqlCommand(
             "select admin,floors,expiredate from user_eleva where eid=19 and cid=530003");                
            cmd.Connection=cn;
            MySqlDataReader dr= cmd.ExecuteReader();
            dr.Read();
            dr.Close();
            MySqlTransaction tr=cn.BeginTransaction();下列代码会报错,nested transaction not supported。为什么?????

解决方案 »

  1.   

    可能是
    1. mysql服务器 autocommit被设为0, 默认是 1. 用语句set @@autocommit=1矫正
    2. 某些接口能打开隐性事务状态, 如ado的connetion对象中的Attributes属性中设了AdXactCommitRetaining和AdXactAbortRetaining值也会打开隐性事务状态.
      

  2.   

    我使用  .net。我设置init_connect='set autocommit=0',问题依然存在问题是。数据库里有2表,都是InnoDB引擎,user_eleva里有自增列。另一个表没有自增列,没问题。而且user_eleva表里选择不同的cid,eid会不同结果,有的可以开启事务,有的报错(“不需内嵌事务”),每个cid,对应多个eid(另有ueid为自增,作为主键)。
    有些cid错误现象是,选择第一个eid时报错,第二个和其它的eid就是好的。以上这些现象,让我百思不得解。对数据库事务,连接,索引,自增列,没有太深造化,有哪位高人遇到过这中现象。
      

  3.   

    http://bugs.mysql.com/bug.php?id=41664
    在MySQL官方,有类似的现象出现。我先测试下新的连接器。
      

  4.   

    我遇到的是事务失败了,就不能再看起事务了。也是这一个错误nested transaction not supported