【求助】两个表tb_account & tb_user 都是 Innodb类型的,在一个事物中进行数据插入操作,tb_account数据插入成功了,tb_user 确没有。
PHP代码如下:
$this->Account->begin();
$returnQuery = $this->Account->save($account) && $this->User->save($user) && $this->Token->save($token);
if ($returnQuery) {
$this->Account->commit();
...
} else {
// 如果帐号建立失败,则重新跳转至注册页面
$this->Account->rollback();
...
}
PHP代码如下:
$this->Account->begin();
$returnQuery = $this->Account->save($account) && $this->User->save($user) && $this->Token->save($token);
if ($returnQuery) {
$this->Account->commit();
...
} else {
// 如果帐号建立失败,则重新跳转至注册页面
$this->Account->rollback();
...
}
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 744583
Current database: shouji+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tb_account | CREATE TABLE `tb_account` (
`email` varchar(100) NOT NULL,
`passwd` varchar(45) NOT NULL,
`status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0: unverified\n1: active\n-1: inactive',
PRIMARY KEY (`email`),
UNIQUE KEY `email_UNIQUE` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tb_user | CREATE TABLE `tb_user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(45) NOT NULL,
`mobile` varchar(100) DEFAULT NULL,
`mobile_id` int(11) DEFAULT NULL,
`nickname` varchar(60) NOT NULL,
`fullname` varchar(45) DEFAULT NULL,
`sex` char(3) NOT NULL DEFAULT '1',
`birthday` date DEFAULT NULL,
`province` varchar(45) DEFAULT NULL,
`city` varchar(45) DEFAULT NULL,
`qq` varchar(20) DEFAULT NULL,
`about` varchar(900) DEFAULT NULL,
`created` datetime DEFAULT NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `IDX_USER_EMAIL` (`email`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=10504 DEFAULT CHARSET=utf8 COMMENT='用户信æ¯è¡¨' |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
不是封装在START TRANSACTION 和commit中间的,每个SQL语句都当做一个单独的事务,只有在这个中间的,才会把他们整体当做一个事务的。
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;
$this->Account->commit();
封装了事务
只要调用一次就可以
那就会出现没有提交的问题。建议楼主好好检查一下代码,应该是代码的问题。