You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Drogon Framework尊重MySQL表名的大小写敏感性?

Drogon Framework生成MySQL模型时的表名大小写敏感问题

我在使用Drogon Framework从MySQL数据库表创建C++模型时,碰到了表名大小写敏感的问题。

我的model.json配置文件内容如下:

{"rdbms": "mysql","host": "[****]","port": [****],"dbname": "[****]","schema": "public","user": "root","password": "[****]","tables": ["MyTable","****","****","****"],// the rest of your config}

执行命令drogon_ctl create model models时,出现了如下错误:

Create model
mysql
Connect to server...
Source files in the models folder will be overwritten, continue(y/n)?
y
table name:mytable
Error(1146) [42S02] "Table '****.mytable' doesn't exist"

明显能看到Drogon会自动把表名转成小写(比如Alarmes会变成alarmes),但我的MySQL是大小写敏感的,所以触发了这个报错。我试过用命令行参数指定表名(drogon_ctl create model models table_name=Alarmes),结果还是一样的问题。请问怎么让Drogon Framework尊重MySQL表名的大小写敏感性?


解决方法

1. 调整MySQL的大小写敏感配置(优先推荐,若允许修改数据库)

找到MySQL的配置文件(比如my.cnf或my.ini),添加或修改以下参数:

lower_case_table_names=0

重启MySQL服务即可。这个参数设为0时,MySQL会严格区分表名大小写;注意如果之前是其他值,修改后要确保现有表名的大小写和数据库中的完全一致,避免出现找不到表的情况。

2. 修改Drogon的模型生成逻辑(无法改MySQL配置时用)

如果不能调整MySQL配置,可以修改Drogon的drogon_ctl源码,禁用表名转小写的逻辑:

  • 找到Drogon源码中处理MySQL表名的部分(一般在tools/drogon_ctl/CreateModel.cc文件里),定位到把表名转成小写的代码段,注释或删除这部分逻辑。
  • 重新编译Drogon和drogon_ctl工具。

3. 尝试配置表名引用方式

检查Drogon的model.json是否支持配置表名的引用规则,部分ORM工具允许通过配置让生成的SQL用反引号包裹表名,以此保留大小写。不过目前Drogon官方文档没有明确提到这个配置项,你可以尝试在model.json中添加类似"quote_table_names": true的配置,或者查看Drogon最新版本是否支持该特性。


内容的提问来源于stack exchange,提问作者Cesar Berci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 00:52:40