如何防止MySQL会话中的隐式事务?
我正在针对一个带有MySQL数据库的大型应用程序编写测试。该语言使“提交”和“回滚”更容易挂钩;使用保存点技巧的测试允许我的测试临时更改数据库的状态,并在退出时将它们全部回滚 但这是一个有很多贡献者的大项目,可能会有一个DDL语句混合在其中。任何隐式提交的语句都会破坏将数据库返回其原始状态的测试契约。有没有办法强制执行隐式提交命令时出错 相关系数:如何防止MySQL会话中的隐式事务?,mysql,transactions,Mysql,Transactions,我正在针对一个带有MySQL数据库的大型应用程序编写测试。该语言使“提交”和“回滚”更容易挂钩;使用保存点技巧的测试允许我的测试临时更改数据库的状态,并在退出时将它们全部回滚 但这是一个有很多贡献者的大项目,可能会有一个DDL语句混合在其中。任何隐式提交的语句都会破坏将数据库返回其原始状态的测试契约。有没有办法强制执行隐式提交命令时出错 相关系数: read_变量看起来很有希望,但限制太多。我想允许插入/更新/删除语句。是否有一个类似但“更轻”的变量可以禁用DDL MySQL是否有任何“钩子”或
read_
变量看起来很有希望,但限制太多。我想允许插入/更新/删除语句。是否有一个类似但“更轻”的变量可以禁用DDL这里有两种变通方法,但都不能完全满足我的要求
从“testuser”撤销MyDB.*上的创建、更改、删除、锁定表代码>-测试结束后,在特权更改下授予。这个看起来不错,但它需要一个具有GRANT&REVOKE权限的DB用户。应用程序的数据库用户没有它们,这是理所当然的。理想情况下,运行这些测试的开发人员不需要做任何额外的管理工作,比如获取额外的priv或创建新的DB用户
mysql>
XA START 0x123;——查询正常,0行受影响(0.00秒)
mysql>
插入temp_yh_测试值(0,'popbus');--查询正常,1行受影响(0.00秒)
mysql>
create table temp_new_1(id int NOT NULL AUTO_INCREMENT,xyz
varchar(40),主键(id))引擎=InnoDB;——错误1399(XAE07):XAER_RMFAIL:当全局事务处于活动状态时,无法执行该命令