diff --git a/src/driver/sqlx_mysql.rs b/src/driver/sqlx_mysql.rs index e1c593b0c6..2bd4a3fffb 100644 --- a/src/driver/sqlx_mysql.rs +++ b/src/driver/sqlx_mysql.rs @@ -275,18 +275,19 @@ pub(crate) async fn set_transaction_config( isolation_level: Option, access_mode: Option, ) -> Result<(), DbErr> { + let mut settings = Vec::new(); + if let Some(isolation_level) = isolation_level { - let stmt = Statement { - sql: format!("SET TRANSACTION ISOLATION LEVEL {isolation_level}"), - values: None, - db_backend: DbBackend::MySql, - }; - let query = sqlx_query(&stmt); - conn.execute(query).await.map_err(sqlx_error_to_exec_err)?; + settings.push(format!("ISOLATION LEVEL {isolation_level}")); } + if let Some(access_mode) = access_mode { + settings.push(access_mode.to_string()); + } + + if !settings.is_empty() { let stmt = Statement { - sql: format!("SET TRANSACTION {access_mode}"), + sql: format!("SET TRANSACTION {}", settings.join(", ")), values: None, db_backend: DbBackend::MySql, };