@@ -714,24 +714,28 @@ func (a *action) execSQLs(executeSQLs []*model.ExecuteSQL) error {
714714
715715 results , txErr := a .plugin .Tx (context .TODO (), qs ... )
716716 for idx , executeSQL := range executeSQLs {
717+ if results != nil && idx < len (results .ExecResult ) {
718+ rowAffects , _ := results .ExecResult [idx ].RowsAffected ()
719+ executeSQL .RowAffects = rowAffects
720+ }
717721 if txErr != nil {
718722 executeSQL .ExecStatus = model .SQLExecuteStatusFailed
719723 executeSQL .ExecResult = txErr .Error ()
720724 if a .hasTermination () && _errors .Is (mysql .ErrInvalidConn , txErr ) {
721725 executeSQL .ExecStatus = model .SQLExecuteStatusTerminateSucc
722- if idx >= len (results ) {
723- continue
724- }
725- if results [idx ] == nil {
726- continue
727- }
728- rowAffects , _ := results [idx ].RowsAffected ()
729- executeSQL .RowAffects = rowAffects
730726 }
731727 continue
732728 }
733- rowAffects , _ := results [idx ].RowsAffected ()
734- executeSQL .RowAffects = rowAffects
729+ if results != nil && results .ExecErr != nil {
730+ if results .ExecErr .ErrSqlIndex == uint32 (idx ) {
731+ executeSQL .ExecStatus = model .SQLExecuteStatusFailed
732+ executeSQL .ExecResult = results .ExecErr .SqlExecErrMsg
733+ } else {
734+ executeSQL .ExecStatus = model .SQLExecuteStatusFailed
735+ executeSQL .ExecResult = model .TaskExecResultRollback
736+ }
737+ continue
738+ }
735739 executeSQL .ExecStatus = model .SQLExecuteStatusSucceeded
736740 executeSQL .ExecResult = model .TaskExecResultOK
737741 }
@@ -741,6 +745,9 @@ func (a *action) execSQLs(executeSQLs []*model.ExecuteSQL) error {
741745 if txErr != nil {
742746 return txErr
743747 }
748+ if results != nil && results .ExecErr != nil {
749+ return fmt .Errorf ("sql execute err msg: %v" , results .ExecErr .SqlExecErrMsg )
750+ }
744751 return nil
745752}
746753
0 commit comments