【发布时间】:2011-09-21 22:47:51
【问题描述】:
在最近从 Oracle 迁移到 Postgres 并从 Django 1.2 升级到 1.3 之后,我们在将对象保存到数据库时开始遇到问题。当调用 save() 时不返回 id,即使通过标准 django 管理面板保存标准 django auth 模型也会发生这种情况(即使用户已添加到数据库,也会返回“/admin/auth/user/None/”并且有一个 id)。
我们在同一个数据库上运行的所有其他站点都没有这个问题,但是它们运行的是 Django 1.1 或 1.2。
我们发现,对于迁移后创建的新表,它们的序列具有“拥有者”属性,该属性由序列所在的列(通常是 id 列)拥有。更改“拥有者”属性解决了我们在 1.3 中遇到的问题。
有人知道造成这种情况的根本原因是什么吗?如果其他人遇到此问题,我们已经找到了解决方案,但我们很想知道是什么原因造成的。
【问题讨论】:
-
我遇到了同样的问题。你介意分享你的解决方案吗?将不胜感激。
-
@iain-shelvington 你是怎么解决这个问题的?
-
@Neil 我们所有的表都有一个主键“id”,我们为所有表运行这个 SQL。 ALTER SEQUENCE tablename_id_seq OWNED BY tablename.id;
-
@IainShelvington 谢谢。这对我也有用。
标签: django postgresql