MySQL迁移至MariaDB 10.11后查询列名大小写不符的配置咨询
问题:MariaDB 10.11 配置返回大写列名以匹配MySQL行为
原有系统使用MySQL,现已迁移至MariaDB 10.11。执行如下SQL查询后,发现新旧数据库返回的结果列名大小写不一致:
SELECT AA.CLOSING_ADVICE_ID, AA.CLOSING_ADVICE_NUMBER FROM ( SELECT ca.closing_advice_id,ca.CLOSING_ADVICE_NUMBER,ca.debit_note_id,ca.currency_id,pp.payment_plan_term, (pr.PRODUCTION_NET_PREMIUM * (pp.PAYMENT_PLAN_PERCENTAGE/100)) AS due_to_you FROM t_closing_advice ca INNER JOIN t_production pr ON ca.closing_advice_id=pr.closing_advice_id INNER JOIN t_payment_plan pp ON ca.closing_advice_id=pp.closing_advice_id )AA WHERE AA.CLOSING_ADVICE_ID=1500;
原MySQL查询结果返回的列名为全大写,而MariaDB返回的列名大小写与SQL语句中书写的一致(混合大小写)。希望无需修改SQL语句,通过配置让MariaDB返回大写列名,询问是否有相关配置项?
解决方案
- 可通过配置lower_case_table_names参数实现列名全大写返回,匹配MySQL的默认行为:
- 该参数需在MariaDB启动前设置,无法动态修改(动态调整会报错)
- 设置值为
2:表名按输入的大小写存储,但比较时不区分大小写;同时查询返回的列名会自动转换为大写
- 修改配置步骤:
- 编辑MariaDB的配置文件(常见路径为
/etc/my.cnf、/etc/mysql/my.cnf或用户目录下的~/.my.cnf,依系统环境而定) - 在
[mysqld]配置段中添加:lower_case_table_names=2 - 重启MariaDB服务使配置生效
- 编辑MariaDB的配置文件(常见路径为
- 注意事项:
- 修改前需确保现有数据库中所有表名的大小写一致,避免出现表找不到的异常
- 该参数同时影响表名和列名的大小写处理,设置后表名的查询比较也会不区分大小写
内容的提问来源于stack exchange,提问作者Denny Septian Panggabean
相关产品推荐
相关产品推荐

