我正在开发一个Java -Spring3.0- Hibernate注解应用程序。
一切正常,直到我切换到另一台MySQL数据库服务器。
在第一个示例中,当抛出异常时,提交SQL并将其保存到数据库中。(这就是我想要的)。
在第二个MySQL服务器(新服务器)中,当抛出异常时,所有数据库更新都会丢失。
我能做错什么呢?异常时提交不是应用程序特性(与db特性相反)吗?为什么MySQL服务器“知道”在所有这些SQL之后抛出了异常?
发布于 2011-03-10 19:57:41
我不知道每一个mysql存储引擎。但是,无法在所有引擎中执行提交和回滚。InnoDB存储引擎支持这些操作。
发布于 2011-03-10 19:57:48
您的应用程序代码似乎无意中依赖于与之对话的数据库服务器的默认自动提交行为。异常的事务行为是一个复杂的主题,它可能是偶然的而不是设计的。
考虑到这是一个暴露bug并修复它的理想机会,因为现在您有了可重现的测试用例。
发布于 2011-03-10 21:02:32
有点尴尬,但问题是,在我的第一个服务器中,myisam (即非事务性)的所有表,这就是“事务”不被回滚的原因(即根本不能回滚任何事务)。
一旦我移动到新的服务器,我发现了这个bug,并在我的上下文文件中正确地配置了no-rollback-for属性,现在一切都正常了。
我把这个编程叫做
https://stackoverflow.com/questions/5258442
复制相似问题