【问题标题】:Doctrine 2 choking on Postgres table columns学说 2 在 Postgres 表列上窒息
【发布时间】:2012-03-23 15:28:58
【问题描述】:

我们在一个新项目中使用了 Doctrine 2,但遇到了一个问题:Doctrine 2 阻塞了 Postgres 表列名称,其中包含空格。例如,假设有一列名为“销售人员”。虽然您和我都知道列名中不应该有空格,但它的存在是一样的。数据库是多年前设计的,关键业务系统在其上运行,因此无法更改列名。有没有办法解决这个问题而无需破解 Doctrine 来处理这种情况?如果不是,你会如何建议在 Doctrine 端解决这个问题?

【问题讨论】:

    标签: postgresql orm doctrine-orm


    【解决方案1】:

    看起来像另一个编码错误的 ORM

    http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/limitations-and-known-issues.html

    http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/basic-mapping.html

    说一些有用的话,比如:“你不能使用非 [a-zA-Z0-9_]+ 字符,它们会破坏几个 SQL 语句”和“不应该使用标识符引用来启用使用非标准字符,例如作为破折号”和“当引用用于区分大小写的原因时,Schema-Tool 可能会遇到麻烦”。

    看起来这是另一个 ORM,由不希望它与实际数据库一起使用的人构建。在其中包含带有空格等的列并不是一个绝妙的主意,但在 SQL 中是完全合法的。

    你真的只有三个选择:

    1. 重命名所有列(或将所有内容包装在视图中)。
    2. 黑客学说
    3. 转储原则

    它们都不理想,我不确定在你的情况下哪种最简单。

    【讨论】:

    • 很棒的链接!我们的项目中有几个人试图实施黑客攻击,但这很混乱。不得不使用它令人沮丧,但它甚至无法在我们的数据库中正常工作。
    • 根据此类问题的广泛程度,可能会使用视图。但我怀疑你已经考虑过了。
    猜你喜欢
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-23
    • 2011-12-13
    • 2013-04-20
    • 2017-01-10
    相关资源
    最近更新 更多