如何使推进orm使用区分大小写的名称

时间:2016-08-03 11:04:07

标签: mysql propel case-sensitive propel2

Propel ORM无法在生产环境中进行查询,因为它连接的数据库已启用区分大小写(linux / ubuntu)。由于数据库是由另一个组织管理的,因此修复它比修改代码更难。

有没有办法强制Propel ORM使用区分大小写的名称?

谢谢!

1 个答案:

答案 0 :(得分:0)

Propel在生成的文件中有一个Map目录。该目录具有表和列名称的所有映射,这些映射推动了MySQL使用的内容。

我们通过编写一个简单的python脚本解决了我们的问题,该脚本根据我们的要求纠正了区分大小写。

Map目录中的每个文件对应于一个表的映射。我们的脚本逐个打开每个文件,并用我们的特定要求替换每个映射(这是为了使表名大写):

这里是我们用于匹配表名映射的RegEx:

"(\s*const TABLE_NAME = ')([a-zA-Z_]+)(';)"

RegEx用于匹配每个文件中的列映射:

"(\s*\* the column name for the.*\s*\*\/.*\s*const [a-zA-Z_]+ = ')([a-zA-Z_]+)(\.[a-zA-Z_]+)(';)"