diff --git a/pkg/services/sqlstore/sqlstore.go b/pkg/services/sqlstore/sqlstore.go index 022836826de..dead55bb102 100644 --- a/pkg/services/sqlstore/sqlstore.go +++ b/pkg/services/sqlstore/sqlstore.go @@ -281,6 +281,10 @@ func (ss *SQLStore) buildConnectionString() (string, error) { cnnstr += fmt.Sprintf("&tx_isolation=%s", val) } + if ss.Cfg.IsFeatureToggleEnabled("mysqlAnsiQuotes") { + cnnstr += "&sql_mode='ANSI_QUOTES'" + } + cnnstr += ss.buildExtraConnectionString('&') case migrator.Postgres: addr, err := util.SplitHostPortDefault(ss.dbCfg.Host, "127.0.0.1", "5432") diff --git a/pkg/services/sqlstore/sqlstore_test.go b/pkg/services/sqlstore/sqlstore_test.go index 0b04716f7a8..d17ba44c9a0 100644 --- a/pkg/services/sqlstore/sqlstore_test.go +++ b/pkg/services/sqlstore/sqlstore_test.go @@ -72,6 +72,12 @@ var sqlStoreTestCases = []sqlStoreTest{ dbURL: "://invalid.com/", err: &url.Error{Op: "parse", URL: "://invalid.com/", Err: errors.New("missing protocol scheme")}, }, + { + name: "Sql mode set to ANSI_QUOTES", + dbType: "mysql", + dbHost: "[::1]", + connStrValues: []string{"sql_mode='ANSI_QUOTES'"}, + }, } func TestIntegrationSQLConnectionString(t *testing.T) { @@ -112,5 +118,7 @@ func makeSQLStoreTestConfig(t *testing.T, dbType, host, dbURL string) *setting.C _, err = sec.NewKey("password", "pass") require.NoError(t, err) + cfg.IsFeatureToggleEnabled = func(key string) bool { return true } + return cfg } diff --git a/pkg/services/sqlstore/sqlutil/sqlutil.go b/pkg/services/sqlstore/sqlutil/sqlutil.go index 79290152cd0..240aa1470f2 100644 --- a/pkg/services/sqlstore/sqlutil/sqlutil.go +++ b/pkg/services/sqlstore/sqlutil/sqlutil.go @@ -28,9 +28,13 @@ func MySQLTestDB() TestDB { if port == "" { port = "3306" } + conn_str := fmt.Sprintf("grafana:password@tcp(%s:%s)/grafana_tests?collation=utf8mb4_unicode_ci", host, port) + if _, present := os.LookupEnv("MYSQL_ANSI_QUOTES"); present { + conn_str += "&sql_mode='ANSI_QUOTES'" + } return TestDB{ DriverName: "mysql", - ConnStr: fmt.Sprintf("grafana:password@tcp(%s:%s)/grafana_tests?collation=utf8mb4_unicode_ci", host, port), + ConnStr: conn_str, } }