Skip to content

Commit 2dbbe2c

Browse files
gitmknanonymous
andauthored
fix: mysql8.0 lower_case_table_names (#1751)
Co-authored-by: anonymous <anonymous@mail.org>
1 parent 96418d9 commit 2dbbe2c

File tree

2 files changed

+93
-0
lines changed

2 files changed

+93
-0
lines changed

tencentcloud/resource_tc_mysql_instance.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,6 +1145,11 @@ func mysqlMasterInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData,
11451145
supportsParameters[*parameter.Name] = parameter
11461146
}
11471147

1148+
version := d.Get("engine_version").(string)
1149+
if version == "8.0" && oldParameters["lower_case_table_names"] != newParameters["lower_case_table_names"] {
1150+
return fmt.Errorf("this mysql 8.0 not support param `lower_case_table_names` set")
1151+
}
1152+
11481153
for parameName := range newParameters {
11491154
if _, has := supportsParameters[parameName]; !has {
11501155
return fmt.Errorf("this mysql not support param %s set", parameName)

tencentcloud/resource_tc_mysql_instance_test.go

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,63 @@ func TestAccTencentCloudMysqlInstanceResource_MasterInstance_basic_and_update(t
285285
})
286286
}
287287

288+
// go test -i; go test -test.run TestAccTencentCloudMysqlInstanceResource_mysql8 -v
289+
func TestAccTencentCloudMysqlInstanceResource_mysql8(t *testing.T) {
290+
resource.Test(t, resource.TestCase{
291+
PreCheck: func() { testAccPreCheck(t) },
292+
Providers: testAccProviders,
293+
CheckDestroy: testAccCheckMysqlMasterInstanceDestroy,
294+
Steps: []resource.TestStep{
295+
{
296+
Config: testAccMysqlMasterInstance_mysql8("utf8"),
297+
Check: resource.ComposeTestCheckFunc(
298+
testAccCheckMysqlMasterInstanceExists("tencentcloud_mysql_instance.mysql8"),
299+
resource.TestCheckResourceAttrSet("tencentcloud_mysql_instance.mysql8", "id"),
300+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "charge_type", "POSTPAID"),
301+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "engine_version", "8.0"),
302+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "internet_service", "1"),
303+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "slave_deploy_mode", "0"),
304+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "first_slave_zone", "ap-guangzhou-4"),
305+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "second_slave_zone", "ap-guangzhou-4"),
306+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "slave_sync_mode", "1"),
307+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "availability_zone", "ap-guangzhou-4"),
308+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "instance_name", "myTestMysql"),
309+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "mem_size", "1000"),
310+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "volume_size", "25"),
311+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "intranet_port", "3306"),
312+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "tags.createdBy", "terraform"),
313+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "parameters.character_set_server", "utf8"),
314+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "parameters.lower_case_table_names", "0"),
315+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "parameters.max_connections", "1000"),
316+
),
317+
},
318+
{
319+
Config: testAccMysqlMasterInstance_mysql8("gbk"),
320+
Check: resource.ComposeTestCheckFunc(
321+
testAccCheckMysqlMasterInstanceExists("tencentcloud_mysql_instance.mysql8"),
322+
resource.TestCheckResourceAttrSet("tencentcloud_mysql_instance.mysql8", "id"),
323+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "charge_type", "POSTPAID"),
324+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "engine_version", "8.0"),
325+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "internet_service", "1"),
326+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "slave_deploy_mode", "0"),
327+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "first_slave_zone", "ap-guangzhou-4"),
328+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "second_slave_zone", "ap-guangzhou-4"),
329+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "slave_sync_mode", "1"),
330+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "availability_zone", "ap-guangzhou-4"),
331+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "instance_name", "myTestMysql"),
332+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "mem_size", "1000"),
333+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "volume_size", "25"),
334+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "intranet_port", "3306"),
335+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "tags.createdBy", "terraform"),
336+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "parameters.character_set_server", "gbk"),
337+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "parameters.lower_case_table_names", "0"),
338+
resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql8", "parameters.max_connections", "1000"),
339+
),
340+
},
341+
},
342+
})
343+
}
344+
288345
func testAccCheckMysqlMasterInstanceDestroy(s *terraform.State) error {
289346
logId := getLogId(contextNil)
290347
ctx := context.WithValue(context.TODO(), logIdKey, logId)
@@ -508,3 +565,34 @@ resource "tencentcloud_mysql_instance" "mysql_master" {
508565
}`
509566
return fmt.Sprintf(tpl, instance_name, instranet_port)
510567
}
568+
569+
func testAccMysqlMasterInstance_mysql8(value string) string {
570+
return fmt.Sprintf(`
571+
resource "tencentcloud_mysql_instance" "mysql8" {
572+
internet_service = 1
573+
engine_version = "8.0"
574+
charge_type = "POSTPAID"
575+
root_password = "password123"
576+
slave_deploy_mode = 0
577+
first_slave_zone = "ap-guangzhou-4"
578+
second_slave_zone = "ap-guangzhou-4"
579+
slave_sync_mode = 1
580+
availability_zone = "ap-guangzhou-4"
581+
project_id = 0
582+
instance_name = "myTestMysql"
583+
mem_size = 1000
584+
volume_size = 25
585+
intranet_port = 3306
586+
security_groups = ["sg-ngx2bo7j"]
587+
588+
tags = {
589+
createdBy = "terraform"
590+
}
591+
592+
parameters = {
593+
character_set_server = "%s"
594+
lower_case_table_names = 0
595+
max_connections = "1000"
596+
}
597+
}`, value)
598+
}

0 commit comments

Comments
 (0)