【发布时间】:2023-04-03 04:37:01
【问题描述】:
我目前正在为特定客户端将基于 Code Igniter 的应用程序从 MySQL 移植到 Oracle (11g)。 MySQL 和 Oracle 后端都必须协同工作(即我们不能放弃其中一个)。 MySQL DB 使用大约 100 个表,其中所有标识符都是小写的。当我使用 Oracle 的 SQL Developer 工具将此数据库迁移到 Oracle 时,我最终得到了一个“正确”转换的数据库,但是......所有标识符都是大写的。
现在,对于正常使用来说,这并不是真正的问题,但是在使用 CI Active Record 类时会出现问题。它生成查询,效果如下: SELECT "somecolumn" FROM "sometable" WHERE "someothercolumn" = somevalue
问题在于,当这些标识符使用 " 引号时,Oracle 会强制以区分大小写的方式解释这些标识符,这在这种情况下会造成严重破坏。
修补 CI 和/或应用程序的核心代码以使所有查询都使用不区分大小写的标识符(即,通过删除标识符周围的 " 引号)或即时将所有标识符转换为大写标识符,是不希望 IMO,因为潜在的未来框架升级会受到影响。将所有 MySQL 标识符重命名为大写也是一个非常没有吸引力的场景,并且对应用程序本身产生更大的影响——这肯定不是一种选择。
相反,我想要实现的是让迁移过程(即使用 SQL Developer)简单地尊重源数据库的情况,并完全按照它现在所做的那样执行转换,除了标识符不会更改为大写版本。
我在网上搜索了一个公平的交易以找到实现此目的的方法,但到目前为止无济于事。
有谁知道这是否可以做到,如果可以:怎么做? 转换为所有大写标识符是否可能是全局数据库设置? 我会认为这是一件微不足道的事情,但到目前为止我还无法弄清楚,而且我确实遇到的一些相关参考资料听起来不太有希望......
【问题讨论】:
标签: oracle codeigniter oracle-sqldeveloper database-migration uppercase