2016-11-23 137 views
-1

我在Django中有两个不同的数据库。最初,我在辅助数据库中有一个名为cdr的表。我决定摆脱第二个数据库,并将cdr表添加到第一个数据库。Django不会创建表

我在设置文件和整个应用程序中删除了引用(我认为所有这些引用)到辅助数据库。我删除了所有的迁移文件,并运行新的迁移。

当我运行迁移,即使它不会对我的Postgres数据库存在,则不会创建用于在二级数据库中的表。

我简直不能理解为什么makemigrations函数会在将表格添加回模型定义并且已验证它位于迁移文件中时为表创建迁移文件。当我运行迁移时,它告诉我没有适用的迁移。

这是为什么。我已经确认我已经管理= True。我已经确认该模型不在我的postgres数据库上,登录到第一个数据库并运行\ dt。

为什么Django的仍然认为这表仍然存在,使得它告诉我没有迁移申请,即使它显示了一个迁移创建命令文件?我甚至放弃了辅助数据库,以确保它不会被引用。

我怀疑代码不需要向我解释这一点,但我会发布如果需要。我想我在这里错过了一些简单的东西。

回答

2

为什么Django的仍然认为该数据库仍然存在,使得 它告诉我没有迁移申请,即使它显示了在迁移一个创建 命令文件

因为Django的维护一个表在您的数据库中称为django_migrations,其中列出了所有已应用的迁移。由于您几乎重新开始,请清除此表,然后运行迁移。

如果这仍然不起作用,仍然假设你仍然在一个新的开始,这是一个简单的事情放下所有的表(或甚至数据库,并再次进行迁移)。还有,你有要保存的数据,你需要看看--fake和--fake-initial选项来迁移

+0

谢谢。当我试图清理这张桌子时,遇到了许多新问题。内容类型作为权限表问题出现。我从这些表中清理相关记录,然后我发现错误表明列中已经存在列或表中不存在列。谢天谢地,这些都是在测试服务器上完成的,但是在我的现场服务器上解决这个问题有没有更好的策略? –

+0

你能否告诉我为什么我的问题得到否定的答案?我研究了Stack的答案,我阅读了文档,并尝试了几个小时的解决方案。同样,我发布了我可能的最全面的描述。我想做得更好,请通过我的帖子咨询问题。 –

+0

请参阅更新 – e4c5