fix: set transaction mode in single command (#2450)
This commit is contained in:
parent
7dffaf1f20
commit
525ec30905
@ -275,18 +275,19 @@ pub(crate) async fn set_transaction_config(
|
|||||||
isolation_level: Option<IsolationLevel>,
|
isolation_level: Option<IsolationLevel>,
|
||||||
access_mode: Option<AccessMode>,
|
access_mode: Option<AccessMode>,
|
||||||
) -> Result<(), DbErr> {
|
) -> Result<(), DbErr> {
|
||||||
|
let mut settings = Vec::new();
|
||||||
|
|
||||||
if let Some(isolation_level) = isolation_level {
|
if let Some(isolation_level) = isolation_level {
|
||||||
let stmt = Statement {
|
settings.push(format!("ISOLATION LEVEL {isolation_level}"));
|
||||||
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)?;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(access_mode) = access_mode {
|
if let Some(access_mode) = access_mode {
|
||||||
|
settings.push(access_mode.to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
if !settings.is_empty() {
|
||||||
let stmt = Statement {
|
let stmt = Statement {
|
||||||
sql: format!("SET TRANSACTION {access_mode}"),
|
sql: format!("SET TRANSACTION {}", settings.join(", ")),
|
||||||
values: None,
|
values: None,
|
||||||
db_backend: DbBackend::MySql,
|
db_backend: DbBackend::MySql,
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user