MariaDB 커넥터 vs MySQLDB 커넥터 - 트랜잭션 문제
MySQL 커넥터에서 MariaDB 커넥터로 마이그레이션하고 있습니다.우리는 스프링과 비트로닉스 거래 매니저를 사용하고 있습니다.
우리가 커넥터를 변경했을 때, 우리는 거래와 관련된 몇 가지 문제에 직면해 있습니다.MySQL과 Maria와의 조인된 트랜잭션 처리 간의 차이라는 근본적인 원인을 발견했을 수 있습니다. 아래의 세부 정보를 참조하십시오.
이 주석은 프로젝트의 여러 위치에서 사용되고 있습니다.@Transactional(propagation = Propagation.REQUIRES_NEW)
구현의 차이점은 다음과 같습니다.
MySQL 커넥터, MysqlX연결 #이(가) 동일합니다.RM 구현:
if(xaresinstanceofMysqlXAConnection){
return this.underlyingConnection.isSameResource(((MysqlXAConnection)xares).underlyingConnection);
}
MariaDB 커넥터, org.mariadb.jdbc.MariaXaResource#는 동일합니다.RM 구현:
//Typicallyusedbytransactionmanagerto"join"transactions.Wedonotsupportjoins,
//soalwaysreturnfalse;
return false;
같은 문제에 직면한 사람이 있습니까?어떻게 처리합니까?
구현:
/**
* Implementation of Audit Log which saves data using JPA in new transaction.
*/
public class JpaAudit implements AuditSPI {
@Autowired
private AuditlogRepository auditLogRepository;
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void log(AuditLogEntity aAuditObj) {
auditLogRepository.save(aAuditObj);
}
}
변화하는Propagation.REQUIRES_NEW
로.Propagation.REQUIRED
도움을 주지만 우리에게는 방법이 아닌 것 같습니다.
질문의 문제는 Diego Dupin(그 덕분에)에 의해 보고되고 수정되었습니다(CONJ-825).
커밋의 주요 부분은 src/main/java/org/mariadb/jdbc/MariaXaResource.java입니다.
@Override
public boolean isSameRM(XAResource xaResource) {
- // Typically used by transaction manager to "join" transactions. We do not support joins,
- // so always return false;
+ if (xaResource instanceof MariaXaResource) {
+ MariaXaResource other = (MariaXaResource) xaResource;
+ return connection
+ .getProtocol()
+ .getUrlParser()
+ .equals(other.connection.getProtocol().getUrlParser());
+ }
+ return false;
}
이 수정 사항은 MariaDB Connector/J 2.7.0에 포함되어 있습니다.
언급URL : https://stackoverflow.com/questions/63666604/mariadb-connector-vs-mysqldb-connector-transaction-issue
'programing' 카테고리의 다른 글
((보이드(*)0x1000)();'는 무슨 뜻입니까? (0) | 2023.07.26 |
---|---|
JSON을 쓸 수 없습니다. 역할 컬렉션을 게으르게 초기화하지 못했습니다. (0) | 2023.07.26 |
스프링 부트를 사용하여 Zuul에 대한 디버그 정보를 보려면 어떻게 해야 합니까? (0) | 2023.07.21 |
MySQL 파티셔닝을 생성한 후 이를 활용하려면 특수 쿼리가 필요합니까? (0) | 2023.07.21 |
엔티티 그룹 기준(OUTER APPLY)에 대한 링크 "oracle 11.2.0.3.0은 적용을 지원하지 않습니다." (0) | 2023.07.21 |