"应用程序中的冲突模型......"使用外部数据库表

时间:2016-01-05 20:24:18

标签: django models

我有一个项目,其中包含许多应用程序,这些应用程序可以访问包含100个表的本地MySQL数据库,还有几个具有更多表的外部MySQL和Ms-SQL Server数据库。所有外部表都使用" managed = False"在模型中定义。元数据。

我最近根据发布说明中的说明以及StackOveflow的其他提示等将Django从1.6升级到1.7。

除了访问远程数据库表的所有应用程序之外,所有内容似乎都在重新运行。这是一个示例消息:

RuntimeError: Conflicting 'bugview_deferred_description_disposition_divisioaf59cb28117de5eb6ddfea0476dab601' models in application 'nvbugsdw': <class 'bug_metrics.models_bugs.BugView_Deferred_Description_Disposition_Divisioaf59cb28117de5eb6ddfea0476dab601'> and <class 'bug_metrics.models_bugs.BugView_Deferred_Description_Disposition_Divisioaf59cb28117de5eb6ddfea0476dab601'>.

表BugView在文件名models_bugs.py中定义如下:

class BugView(models.Model):
BugId            = models.BigIntegerField(primary_key=True)
Module           = models.CharField(max_length=128, null=False)
Requester        = models.CharField(max_length=128, null=False)
QAEngineer       = models.CharField(max_length=128, null=False)
Engineer         = models.CharField(max_length=128, null=False)
RequestDate      = models.DateTimeField(null=False)
ModifiedDate     = models.DateTimeField(null=False)
Priority         = models.CharField(max_length=50, null=False)
Severity         = models.CharField(max_length=50, null=False)
Disposition      = models.CharField(max_length=64, null=False)
BugAction        = models.CharField(max_length=64, null=False)
Origin           = models.CharField(max_length=64, null=False)
GeographicOrigin = models.CharField(max_length=128, null=False)
Division         = models.CharField(max_length=64, null=False)
Synopsis         = models.CharField(max_length=256, null=False)
Description      = models.CharField(max_length=1024, null=False)
BugType          = models.CharField(max_length=50, null=False)
OriginalBugId    = models.BigIntegerField()

class Meta:
    app_label = 'nvbugsdw'
    managed   = False
    db_table  = 'bugview'

在views.py文件中,类的导入如下:

from .models_bugs import BugView

我也试过

from models_bugs import BugView
from bug_metrics.models_bugs import BugView

&#34; bug_metrics&#34;是应用程序名称。

我按照以前在https://code.djangoproject.com/ticket/22280上发布的所有建议都没有效果。

此刻我不知所措。有什么建议吗?

此外,这可能没有关系,但在尝试调试此问题时(通过在manage.py中转储sys.path),我注意到当我运行命令时,manage.py中的代码执行了两次

./manage.py runserver --nothreading 0.0.0.0:8081

我的sys.path是:

/opt/graphic_tools/gtools
/usr/local/lib/python2.7/dist-packages/South-0.8.4-py2.7.egg
/usr/lib/python2.7
/usr/lib/python2.7/plat-linux2
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages/PIL
/usr/lib/python2.7/dist-packages/gst-0.10
/usr/lib/python2.7/dist-packages/gtk-2.0
/usr/lib/pymodules/python2.7
/usr/lib/python2.7/dist-packages/ubuntu-sso-client
/usr/lib/python2.7/dist-packages/ubuntuone-client
/usr/lib/python2.7/dist-packages/ubuntuone-control-panel
/usr/lib/python2.7/dist-packages/ubuntuone-couch
/usr/lib/python2.7/dist-packages/ubuntuone-installer
/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol

&#34; /选择/ graphic_tools / gtools&#34;是我的项目目录。它不包含 init .py文件,并且包含所有应用程序子目录,包括&#34; gtools&#34;子目录。

2 个答案:

答案 0 :(得分:0)

一个建议。您是否尝试同步“遥控器”&#39;升级到新版Django后的数据库?也许他们没有同步?

我假设你有类似的东西: DATABASES = {

&#39;默认&#39;:{some credentials},

&#39; remote_db_name1&#39;:{some credentials},

&#39; remote_db_name2&#39;:{some credentials}, ......

}

你可以运行

  

./ manage.py migrate --database = remote_db_name1

     

./ manage.py migrate --database = remote_db_name2

等。 (另外,我假设你以前为你的应用程序运行了#migmigrations&#39;。)

原因是默认情况下,迁移操作默认为&#39; db,所以可以跳过其他人。

答案 1 :(得分:0)

因此,在我的特定情况下,问题是由运行较旧版本的Django引起的。我以为我安装了1.7.11但实际安装了1.7.0。当我安装1.7.11时,问题就消失了。

错误的方式:

sudo pip install django=="1.7"

正确的方式:

sudo pip install django=="1.7.11"