我正在开发一个MySQL数据库中的Java处理数据软件,由于回滚调用没有做我所期望的事情,我面临一个问题.我的函数由两个查询组成,如果没有执行第二个查询(或错误),则需要回滚以保持数据的一致性。下面是我的代码,我一直在执行一个语法错误,目的是在第二个查询执行期间抛出一个错误。调用rollback方法,但是我的第一个语句在我的数据库中执行和提交,您能解释一下为什么吗?
@Override
public void updateIndicatorRemainingTimeAndExecuted(int id) throws ServiceException {
Pre
我有两个存储库:
locationRepository
playerRepository
考虑以下情况:
@Transactional
public Player createPlayer(String locationName, String name) {
Location location = new Location(locationName);
location = locationRepository.save(location);
Player player = new Player(name, location);
return
我需要从mysql中提取一个值,然后将该值向前更改并插入到MYSQL中。
例如:
$str = mysql_fetch_assoc(mysql_query('SELECT `str_id` FROM `ids` ORDER BY `num_id` DESC LIMIT 1 ')); // = aaa
$str = $str++; // aaa -> aab
// than check if "aab" key already exist
// if not , insert as key as "aab"
至于这个算法,有一个风险,这个脚本
我已经看到了各种关于在事务中使用Spring和MyBatis的文章,但是我面临的问题是回滚不能使用普通的旧JDBC。
我的( test / throwaway)代码非常简单:我打开一个会话,插入一个rec,故意抛出一个错误,然后回滚事务。然而,它总是承诺。
public static void main (String[] args){
//-- omitted for brevity
try {
org.apache.ibatis.logging.LogFactory.useSlf4jLogging();
inputStream
我使用MySQL作为我的数据库,并且我希望使用transaction来确保一切都完好无损,以防出现任何异常。但是Rollback()和Commit()并没有像预期的那样工作。
一开始我在使用Dapper,我认为问题出在Dapper,我停止了使用它,但结果是一样的。
即使代码抛出异常,我尝试插入的记录也会被插入。
var mysql = new MySqlConnection($"server=127.0.0.1;uid=root;pwd=PASSWORD;database=DBNAME;port=3306;default command timeout=0;
我正在使用事务作用域。在这个事务作用域中,我有一个mysql数据库连接。但是,我将需要打开一个新的又一个与前一个事务作用域的MySQL连接。
当我这样做时,我得到了下面的错误Multiple simultaneous connections or connections with different connection strings inside the same transaction are not currently supported.。
这是因为MySQL服务器不支持多个分布式事务吗?是否需要在代码中进行更改,或者应该在服务器中进行更改?
如果我使用上面的方案,并且两个连接都连接