所以我在使用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中列出所有表名时,会有重复的表名)。不幸的是,我发现错误的方法是删除坏表来重新创建它,所以为了重现这个错误,我可能不得不使用时间机器。还是很奇怪的是,当我能够物理访问我的工作机器时,我会给它一个机会。
答案 0 :(得分:1)
那么你的appname_model表还是一个视图?是公开还是其他命名架构?
如果表存在,那么您很可能在不在数据库搜索路径中的模式中使用它。检查旧数据库的search_path。它可能包含了默认值之外的其他内容,或者您的默认搜索架构在postgresql.conf中设置并且是非标准的。