diff --git a/dtmcli/dtmimp/trans_xa_base.go b/dtmcli/dtmimp/trans_xa_base.go index 6404c31..50bb9c8 100644 --- a/dtmcli/dtmimp/trans_xa_base.go +++ b/dtmcli/dtmimp/trans_xa_base.go @@ -33,7 +33,7 @@ func XaHandlePhase2(gid string, dbConf DBConf, branchID string, op string) error // XaHandleLocalTrans public handler of LocalTransaction via http/grpc func XaHandleLocalTrans(xa *TransBase, dbConf DBConf, cb func(*sql.DB) error) (rerr error) { xaBranch := xa.Gid + "-" + xa.BranchID - db, rerr := StandaloneDB(dbConf) + db, rerr := XaDB(dbConf) if rerr != nil { return } diff --git a/dtmcli/dtmimp/utils.go b/dtmcli/dtmimp/utils.go index 1af1fd9..1d08358 100644 --- a/dtmcli/dtmimp/utils.go +++ b/dtmcli/dtmimp/utils.go @@ -176,6 +176,16 @@ func StandaloneDB(conf DBConf) (*sql.DB, error) { return sql.Open(conf.Driver, dsn) } +// XaDB return a standalone db instance for xa +func XaDB(conf DBConf) (*sql.DB, error) { + dsn := GetDsn(conf) + if conf.Driver == DBTypeMysql { + dsn += "&autocommit=0" + } + logger.Infof("opening standalone %s: %s", conf.Driver, strings.Replace(dsn, conf.Password, "****", 1)) + return sql.Open(conf.Driver, dsn) +} + // DBExec use raw db to exec func DBExec(db DB, sql string, values ...interface{}) (affected int64, rerr error) { if sql == "" {