天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
分类: 数据库开发技术
2022-03-23 15:19:57
天翼云RDS数据库支持修改数据库参数。最近遇到几个用户反馈要求天翼云对MySQL RDS数据库的库表名修改为大小写不敏感,这可以通过修改RDS数据库的参数来实现。今天就用这个实例来讲解一下天翼云RDS如何修改数据库参数。
MySQL数据库对库表名称大小写是否敏感和MySQL运行的操作系统有关,因为Windows操作系统对大小写不敏感所以运行在Windows上的MySQL数据库对大小写也不敏感,而Linux操作系统对大小写敏感所以运行在Linux上的MySQL数据库默认情况下对大小写敏感。天翼云MySQL RDS数据库的库表名称默认对大小写敏感,这意味着在数据库里 users 表和 Users 表被视为两个表,那么应用软件在进行数据库连接时必须确保数据库表名称的大小写是正确的。
举个例子,现在有一个数据库名为Test,里面有一个表名称是 Users,如果使用sql语句 select * from test.users 查询,MySQL将返回提示 test.users表不存在,必须使用 select * from Test.Users才可以查询到正确的结果。
mysql> select * from test.users;
ERROR 1146 (42S02): Table 'test.users' doesn't exist
mysql> select * from Test.Users;
+--------+
| name |
+--------+
| 张三 |
| 李四 |
+--------+
2 rows in set (0.00 sec)
由于各种原因,开发人员忽略了大小写问题,就会造成在开发环境下能正常运行的程序移植到天翼云RDS数据库后有问题。
下面我们就来通过配置天翼云RDS数据库的lower_case_table_names参数来解决这个问题。
一、将数据库的库表名称都改为小写
如果需要使MySQL数据库忽略大小写,需要先手动把数据库的库名、表名都改成小写。
库名如果有大写,需要重新建库来解决。表名可以使用rename命令来修改,本文不再讨论。
如果只是修改其它参数,可略过第一步。
二、创建一个新的RDS参数组
首先登录天翼云关系型数据库控制台,点击进入参数组配置。
参数组中已经有MySQL、PostgreSQL和SQLServer数据库的默认参数组。默认参数组不能修改,因此我们需要创建一个新的参数组。
点击页面上方的“创建参数组”按钮,然后选择需要创建的数据库型号及版本。本例中使用的数据库为MySQL 5.6,因此参数组系列要选择 MySQL 5.6。点击确定完成创建。
三、修改参数
在参数组列表中找到刚刚新建的参数组,点击编辑按钮进入参数编辑模式。
进入编辑模式后,页面已列出该数据库支持的所有参数。页面上“是否可修改栏”栏显示为“是”的参数,表示这个参数可以修改。“是否需要重启”栏显示为“是”的参数,表示这个参数修改后,需要重启RDS数据库才能生效,显示为“否”的参数可以立即生效,不需要重启。同时列表中还对参数的功能有简略的描述。
对应到文章开头提到的设置库表大小写不敏感,需要修改lower_case_table_names参数由0改为1。可以在右上角的搜索框中输入lower_case_table_names,快速找到这个参数。点击值这一列,设置lower_case_table_names这个参数为1,然后点击保存按钮使配置生效。
四、应用参数组到数据库实例
现在RDS数据库还是使用的默认参数组,需要把参数组改为刚才经过修改的参数组。
点击进入RDS实例管理,找到正在使用RDS实例。点击主实例行所在的“管理按钮”
选择到“配置参数组”页面,在“新参数组”下拉中选择第二步创建的参数组,再点击提交。
五、重启RDS数据库实例使配置生效
因为 lower_case_table_names 这个参数是需要重启RDS实例才能生效的,因此还需要重启RDS实例。
回到RDS实例管理,点击“重启”按钮使配置生效。
六、验证
等RDS实例重启后,MySQL数据库就对大小写不敏感了,select * from Test.Users 和 select * from test.users 两条SQL语句都能成功执行了。
mysql> select * from Test.Users;
+--------+
| name |
+--------+
| 张三 |
| 李四 |
+--------+
2 rows in set (0.00 sec)
mysql> select * from test.users;
+--------+
| name |
+--------+
| 张三 |
| 李四 |
+--------+
2 rows in set (0.00 sec)
总结
天翼云RDS数据库默认已经对数据库进行了很多优化和配置,如果想根据业务需求修改更多的高级配置,就可以根据本文的方法进行进一步的优化配置