学说 2 在 Postgres 表列上窒息

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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 中是完全合法的。

你真的只有三个选择:

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

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

【讨论】:

很棒的链接!我们的项目中有几个人试图实施黑客攻击,但这很混乱。不得不使用它令人沮丧,但它甚至无法在我们的数据库中正常工作。 根据此类问题的广泛程度,可能会使用视图。但我怀疑你已经考虑过了。

以上是关于学说 2 在 Postgres 表列上窒息的主要内容,如果未能解决你的问题,请参考以下文章

尝试在PHP的表列上添加标题

决定何时在数据库中的表列上创建索引?

如何在 OpenUI5 表列上设置过滤器以触发过滤

T-SQL 根据另一表列过滤一列上的多个值

如何实现 OPENJSON 将 JSON 代码作为列中的文本。如何在 AZURE SQL Dataware House 中的表列上使用 OPENJSON?

Postgres:使用子查询更新表列