在恢复的geodjango postgis备份中无法识别的表

时间:2011-08-27 01:31:08

标签: django postgresql postgis database-backups

所以我在使用pg_dump之前备份了我的geodjango postgis数据库,然后执行了一些我已经陷入困境的计算。我使用

创建了一个新数据库
createdb -T template0 -O proj proj_backup
psql proj_backup < proj_backup.pg

这似乎工作正常(虽然在导入期间有一些错误),并且使用psql连接到数据库我的所有表都在那里并且似乎具有正确的行数等。

但是,更改我的settings.py以连接到我新导入的备份数据库(在我的示例中为proj_backup),会出现以下错误:

DatabaseError: relation "appname_model" does not exist

有什么想法吗?我猜测我的转储错误,或者我没有以某种方式维护ForeignKeys。非常感谢。

更新

所以我想出了我的第一个错误:我有两个同样命名的备份数据库并连接到错误的数据库。连接到正确的似乎修复了一切。然而,它仍然很奇怪,它无法识别其他备份数据库中的表,这些数据肯定存在。在不正确的数据库上运行syncdb最终复制这些表(如果我没记错的话,当我在psql中列出所有表名时,会有重复的表名)。不幸的是,我发现错误的方法是删除坏表来重新创建它,所以为了重现这个错误,我可能不得不使用时间机器。还是很奇怪的是,当我能够物理访问我的工作机器时,我会给它一个机会。

1 个答案:

答案 0 :(得分:1)

那么你的appname_model表还是一个视图?是公开还是其他命名架构?

如果表存在,那么您很可能在不在数据库搜索路径中的模式中使用它。检查旧数据库的search_path。它可能包含了默认值之外的其他内容,或者您​​的默认搜索架构在postgresql.conf中设置并且是非标准的。