MySQL事务是一组一起执行或都不执行的SQL语句。事务的主要目的是为了保证数据的一致性和完整性。MySQL默认开启了事务自动提交模式,即每条SQL语句都会自动提交。可以通过设置autocommit
为0来关闭自动提交,改为手动提交。
MySQL支持两种事务隔离级别:
事务常用于需要保证数据一致性的场景,如银行转账、订单处理等。
以下是一个简单的MySQL事务示例:
-- 关闭自动提交
SET autocommit = 0;
-- 开始事务
START TRANSACTION;
-- 插入数据到表1
INSERT INTO table1 (column1, column2) VALUES ('value1', 'value2');
-- 插入数据到表2
INSERT INTO table2 (column1, column2) VALUES ('value3', 'value4');
-- 提交事务
COMMIT;
-- 或者回滚事务
-- ROLLBACK;
原因:可能是由于没有正确设置自动提交为0,或者在事务中没有执行ROLLBACK
语句。
解决方法:
-- 确保自动提交为0
SET autocommit = 0;
-- 开始事务
START TRANSACTION;
-- 执行SQL语句
INSERT INTO table1 (column1, column2) VALUES ('value1', 'value2');
-- 发生错误时回滚事务
ROLLBACK;
原因:多个事务互相等待对方释放资源。
解决方法:
innodb_lock_wait_timeout
参数设置等待超时时间。领取专属 10元无门槛券
手把手带您无忧上云