1

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

4

2 回答 2

2

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

于 2011-02-22T18:13:08.860 回答
2

这对我来说听起来像是一个 Django 错误。一个较早的错误,未为 PostgreSQL 指定最大名称长度,已得到修复。我希望 Django 生成适合 max_name_length() 的数据库标识符。也许我过于乐观了。

Django 已经知道截断并附加一个可重复的散列以适应 Oracle 的 max_name_length()。(请参阅命名问题。)当然,如果您使用任何其他平台,它们不会只是将一个长的复合标识符放在一起,并希望获得最好的结果。

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

后来。. .

实际上,他们只是将一个长而复杂的标识符放在一起,并希望最好。osdir.com 上的一个帖子表明它将在 Django 1.3 中修复。请参阅DatabaseCreation、表名和索引名的问题 - msg#00142

还是以后。. .

在 MySQL 上运行测试的票证索引长度错误表明,针对 MySQL 的相同修复已在 1.2 版中修复。PostgreSQL(可能还有其他所有平台)也有同样的问题。我不知道对 PostgreSQL 的修复是否将其变为 1.2。

于 2011-02-23T07:01:35.163 回答