谁一开始就是大神?

Yii2事务处理,创建新表后和插入新表数据后就不会回滚[2.0]

目前遇到的问题是
加了下面的功能后,就不能回滚,不加之前异常都是可以捕获到,然后回滚的
php版本 5.6.27
mysql版本5.5.53
新加的功能代码如下:

如果我屏蔽下边的语句,发生异常就能回滚

        //上边是执行事务
        $number =$a->id;//上面获取到自增逐渐
        $arr=array('www.1.com','www.2.com','www.3.com');
        Yii::$app->db->createCommand("
            CREATE TABLE `b_{$number}` (
            `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',
            `name` varchar(255) DEFAULT NULL COMMENT '名称',
            `domain` varchar(255) DEFAULT '' COMMENT '域名',
            `is_delete` int(10) DEFAULT '0',
            PRIMARY KEY (`id`),
            UNIQUE KEY `domain` (`domain`)
            ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='b表_{$number}';
            ")->execute();

        foreach ($arr as $k=>$v){
            $data[] = '("' . 'null' . '", "' . '' . '", "' . $v . '", "' .'0'. '")';
        }
        $query = "INSERT INTO b_{$a->id} (id,name,domain,is_delete)VALUES" .
            implode(',', $data);
        $result=$connection->createCommand($query)->execute();
        if(!$result){
            throw new \Exception('添加失败');
        } 
        //下边捕获异常,try catch 

加了的话,不出错误,能正常提交;
如果模拟插入错误,直接抛异常的,而且不能捕获到

求高手大大解答指教。

在catch里打印错误啊 echo array_values($model->getFirstErrors())[0];exit;
代码贴全点.
代码好乱,事务处理看下这个
Yii2 事务处理
事务开始和回滚呢?

赞(0) 打赏
未经允许不得转载:菜鸟之家 » Yii2事务处理,创建新表后和插入新表数据后就不会回滚[2.0]

评论 抢沙发

登录

找回密码

注册