Python Django:syncdb在加载转储后不创建新表

Python Django:syncdb在加载转储后不创建新表,python,django,postgresql,Python,Django,Postgresql,tl;dr:我们希望在不丢失以前数据的情况下向数据库中添加一个新表 首先,我们使用以下方法转储数据库: $ psql -h localhost dbname > dump_file 然后我们将其加载到本地数据库。这很好用 问题开始: 向models.py添加新模型时,syncdb不会创建表。但是,如果我们创建一个新的数据库(通过删除数据并运行syncdb),它将显示为一个已创建的表 这是令人惊讶的,因为我们不认为添加新表是syncdb无法处理的“模式迁移”。因此,我们认为南方在这方面不会

tl;dr:我们希望在不丢失以前数据的情况下向数据库中添加一个新表

首先,我们使用以下方法转储数据库:

$ psql -h localhost dbname > dump_file
然后我们将其加载到本地数据库。这很好用

问题开始: 向models.py添加新模型时,syncdb不会创建表。但是,如果我们创建一个新的数据库(通过删除数据并运行syncdb),它将显示为一个已创建的表

这是令人惊讶的,因为我们不认为添加新表是syncdb无法处理的“模式迁移”。因此,我们认为南方在这方面不会有所帮助

我有什么遗漏/出错的地方吗

我们的代码是这样的:

class Person(models.Model):
    # attributes

class A(models.Model):
    # attributes

class B(models.Model):
    a_fk = models.ForeignKey(A)
    # more attributes

class ProblemModel(models.Model)
    p_fk = models.ForeignKey(Person)
    a_fk = models.ForeignKey(A)
    b_fk = models.ForeignKey(B)
使用以下命令的相关表的输出:

$ ./manage.py sqlall appname
是:

Django版本1.5.1

ProblemModel是我们试图添加的新模型

提前感谢您的帮助

因此,我们认为南方在这方面不会有所帮助


是的,只要使用-就可以了。

首先,数据还原命令的输入符号错误。应该是:

$ psql -h localhost dbname < dump_file
要将数据恢复到数据库,可以将dump与admin.py一起使用,也可以直接使用
数据库命令。

新表中是否有其他
ForeignKey
定义?其他表中的
NULL
able列可能存在问题,因此Django无法创建相关的FK关系。如果数据填充的表中有一些未索引的列(?),则在创建表之前检查FK关系也可能会导致问题。我对这两个问题都不满意,但可能会有问题,因为这两个问题。注释是执行并完成还是挂起并等待?另外,您是否检查了错误日志?这里进行了粗略猜测,但是您的
ProblemClass
的实际名称是否是其他3个模型类名称的组合?您添加了哪个模型类?请提供有关如何重新创建问题的分步说明。还有什么django版本。@zsquare:没有,完全没有different@FallenAngel: 1. 这些是新表(ProblemModel)中唯一的FK。2.数据填充的表目前没有索引,我不确定“在创建表之前检查FK关系”是什么意思
$ psql -h localhost dbname < dump_file
('python manage.py migrate --no-initial-data')
('python manage.py syncdb')