MySQL数据库默认的存储引擎类型是MyISAM并不支持事务的坑,要把存储类型改为InnoDB

今天无意间发现一段netcore使用事务的代码,同样的写法在mssql中是有效的,而放在mysql数据库中就没效果,怎么样都会直接提交。奇怪得很以为代码有问题
using (TransactionScope Scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
{

	if(true)
            {
                Scope.Complete();
                return; //(shopResult?.ToString(), request.UserId);
            }



    }

最后搜索到篇文章,讲到数据表存储类型的问题,还真是坑。
https://www.cnblogs.com/wahaccp/p/3894243.html
就像文中提到的
MySQL数据库默认的存储引擎类型是MyISAM,这种存储引擎类型不支持事务处理。

在MySQL中,只有InnoDB存储引擎类型的数据表才能支持事务处理。

因此,如果想让MySQL支持事务处理,只要将数据表修改为InnoDB存储引擎类型即可
修改MYSQL的配置文件

创建新表时将使用的默认存储引擎

default-storage-engine=InnoDB
改完数据表默认InnoDB类型mysql要重启一下才会再建表时生效

由于是刚切换mysql数据库使用没多少个项目,一直也没注意,以此记录。

原文地址:https://www.cnblogs.com/hmfl/p/15508611.html