diff --git a/session/session_inception.go b/session/session_inception.go index b24802a9..279d85af 100644 --- a/session/session_inception.go +++ b/session/session_inception.go @@ -6903,11 +6903,12 @@ func (s *session) checkAlterDB(node *ast.AlterDatabaseStmt, sql string) { } func (s *session) checkCharset(charset string) bool { - if s.dbVersion < 80000 && strings.EqualFold(charset, "utf8mb3") { + if s.dbVersion < 50700 && strings.EqualFold(charset, "utf8mb3") { s.appendErrorNo(ErrUnknownCharset, charset) } if s.inc.SupportCharset != "" { for _, item := range strings.Split(s.inc.SupportCharset, ",") { + item = strings.TrimSpace(item) if strings.EqualFold(item, charset) { return true } @@ -6921,6 +6922,8 @@ func (s *session) checkCharset(charset string) bool { func (s *session) checkCollation(collation string) bool { if s.inc.SupportCollation != "" { for _, item := range strings.Split(s.inc.SupportCollation, ",") { + // Support collation of utf8mb3 aliases + item = strings.TrimSpace(strings.ReplaceAll(item, "utf8mb3", "utf8")) if strings.EqualFold(item, collation) { return true } @@ -6934,6 +6937,7 @@ func (s *session) checkCollation(collation string) bool { func (s *session) checkEngine(engine string) bool { if s.inc.SupportEngine != "" { for _, item := range strings.Split(s.inc.SupportEngine, ",") { + item = strings.TrimSpace(item) if strings.EqualFold(item, engine) { return true } diff --git a/session/session_inception_exec_test.go b/session/session_inception_exec_test.go index cf08f8a1..5afede39 100644 --- a/session/session_inception_exec_test.go +++ b/session/session_inception_exec_test.go @@ -318,7 +318,7 @@ func (s *testSessionIncExecSuite) TestAlterTableAddColumn(c *C) { config.GetGlobalConfig().Inc.EnableColumnCharset = true config.GetGlobalConfig().Inc.SupportCharset = "utf8,utf8mb3,utf8mb4" sql = "drop table if exists t1;create table t1(id int primary key);alter table t1 add column c1 varchar(10) character set utf8mb3;" - if s.DBVersion > 80000 { + if s.DBVersion > 50700 { s.testErrorCode(c, sql) } else { s.testErrorCode(c, sql, diff --git a/session/session_inception_test.go b/session/session_inception_test.go index 2f9d6e46..7b43715f 100644 --- a/session/session_inception_test.go +++ b/session/session_inception_test.go @@ -649,7 +649,7 @@ func (s *testSessionIncSuite) TestCreateTable(c *C) { s.testErrorCode(c, sql) sql = "create table t1(a int) character set utf8mb3;" - if s.DBVersion > 80000 { + if s.DBVersion > 50700 { s.testErrorCode(c, sql) } else { s.testErrorCode(c, sql,