egg 学习 mysql 回滚操作

本文介绍了如何在Egg.js框架中使用egg-mysql进行MySQL的回滚操作,强调了MyISAM引擎不支持事务,需要切换到InnoDB。详细讲述了检查与修改数据库及表引擎的方法,并提醒注意autocommit设置,确保事务功能正常工作。
摘要由CSDN通过智能技术生成

egg框架搭建,以及egg-mysql包的引入,繁琐的操作跟着官方文档走就好了

const conn = await app.mysql.beginTransaction(); // 初始化事务

try {
  await conn.insert(table, row1);  // 第一步操作
  await conn.update(table, row2);  // 第二步操作
  await conn.commit(); // 提交事务
} catch (err) {
  // error, rollback
  await conn.rollback(); // 一定记得捕获异常后回滚事务!!
  throw err;
}

 

 

 

这是官方给的回滚操作demo,在service里写的话,把app.mysql.beginTransaction();改为this.app.mysql.beginTransaction();

这里有个bug,虽然从官方复制来代码,但执行时候,不论是否有commit或者rollback,事务操作都会执行,就好像他娘的这一坨代码不存在一样,这是因为MySQL默认的存储引擎是MyISAM,MyISAM存储引擎不支持事务处理,需要把引擎修改为InnoDB

顺便提一嘴,InnoDB引擎支持回滚操作,所以性能上会有一点消耗,存储,读取速度不如MyISAM

更改引擎方式如下:

sql语句:show engines  //查看当前数据库支持的引擎

sql语句:show table status from ‘数据库名’ where name='表名';   /

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值