无需重新编译即可提升PostgreSQL的NAMEDATALEN

时间:2011-02-22 18:07:33

标签: postgresql character constraints limit identifier

是否可以将PostgreSQL中的标识符名称限制提高到63个以上字符,而无需重新编译所有数据库系统?我有这个Django项目因为这个限制而生成重复的索引名称,并且由于我的项目业务需求,无法更改模型名称。

2 个答案:

答案 0 :(得分:2)

不,不可能,你必须使用较短的名字。其他dbms允许更少的字符,你总是要检查这些约束。

答案 1 :(得分:2)

这对我来说听起来像是一个Django错误。早期的错误maximum name length not specified for PostgreSQL已得到修复。我希望Django能够生成适合max_name_length()的数据库标识符。也许我是不合理的乐观。

Django已经知道要截断并附加一个可重复的哈希以适应Oracle的max_name_length()。 (参见Naming Issues。)当然,如果您使用任何其他平台,他们不会只是将一个长的复合标识符放在一起并希望最好。

你是否有可能覆盖导致Django忽略max_name_length()的默认行为?

稍后。 。

实际上,他们只是将一个长的复合标识符放在一起并希望最好。 osdir.com上的一个帖子暗示它将在Django 1.3中修复。见Problems with DatabaseCreation, table names, and index names - msg#00142

还是晚些时候。 。

票证Index length errors running tests on MySQL显示在1.2版中修复了MySQL的相同修复程序。 PostgreSQL(可能还有其他所有平台)也有同样的问题。我不知道PostgreSQL的修复是否成为1.2。