From 09cd7418b1d7b6ebdc6b00a39101045b65732006 Mon Sep 17 00:00:00 2001 From: petoju Date: Thu, 25 Apr 2024 22:16:13 +0200 Subject: [PATCH] Support ANSI_QUOTES default set on server (#139) Fixes #137 --- mysql/provider.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mysql/provider.go b/mysql/provider.go index d819d5e01..154b4e0b4 100644 --- a/mysql/provider.go +++ b/mysql/provider.go @@ -386,8 +386,15 @@ func afterConnectVersion(ctx context.Context, mysqlConf *MySQLConfiguration, db versionMaxExclusive, _ := version.NewVersion("8.0.0") if currentVersion.GreaterThanOrEqual(versionMinInclusive) && currentVersion.LessThan(versionMaxExclusive) { - // CONCAT and setting works even if there is no value. - _, err = db.ExecContext(ctx, `SET SESSION sql_mode=CONCAT(@@sql_mode, ',NO_AUTO_CREATE_USER')`) + // We set NO_AUTO_CREATE_USER to prevent provider from creating user when creating grants. Newer MySQL has it automatically. + // We don't want any other modes, esp. not ANSI_QUOTES. + _, err = db.ExecContext(ctx, `SET SESSION sql_mode='NO_AUTO_CREATE_USER'`) + if err != nil { + return nil, fmt.Errorf("failed setting SQL mode: %v", err) + } + } else { + // We don't want any modes, esp. not ANSI_QUOTES. + _, err = db.ExecContext(ctx, `SET SESSION sql_mode=''`) if err != nil { return nil, fmt.Errorf("failed setting SQL mode: %v", err) }