python - Django + InnoDB : random failure of model reading

标签 python mysql django innodb

我在 django 中有一个项目,该项目在开发服务器上运行良好,但在托管服务器上运行不佳。

由于我无权访问托管服务器上的控制台,因此我通过复制 python manage.py sql <app name> 的输出来创建表。到托管服务器上 phpMyAdmin 中的 SQL 查询部分。

在我的应用程序中,我有两个模型:

class Question(models.Model):
    creationDate = models.DateField('date created', auto_now_add=True, editable=False)
    publicationDate  = models.DateTimeField('date published', blank=True, null=True, default=None)
    author = models.ForeignKey(User)
    class Meta:
            get_latest_by = "publicationDate"

    def __str__(self):
            return str(self.id)

class Text(models.Model):
    question = models.ForeignKey(Question, db_index=True)
    answerId = models.PositiveSmallIntegerField(null=True, blank=True, default=None)
    language = models.CharField(max_length=5, default = "uk", choices=settings.LANGUAGES)
    text = models.CharField(max_length=255)
    imgPath = models.CharField('path to the image representing the question/answer', max_length=255, blank=True)
    colourId = models.PositiveSmallIntegerField(blank=True, null=True, default=None)

    def __str__(self):
            return self.text

我还有 Django 生成的管理页面:

from django.contrib import admin
from survey.models import Question, Text

class TextInline(admin.StackedInline):
    fields = (('answerId','language','text','colourId'),)
    model = Text
    extra = 3

class QuestionAdmin(admin.ModelAdmin):
    fields = (('author','publicationDate'),)
    inlines = [TextInline]

admin.site.register(Question, QuestionAdmin)
admin.site.register(Text)

现在在开发服务器上一切正常。我可以为每个问题添加问题、不同语言的文本,保存它,然后打开它并查看存储的内容。

在托管服务器上创建问题和文本的部分有效。当我检查 SQL 表时,所有信息都存储在那里。但是当我想在管理 View 中查看保存的问题时,它总是显示问题对象的信息,但有时会显示与其关联的文本对象,但大多数时候都不会显示。

此外,在应在管理 View 中显示可用模型的页面上,文本对象也经常丢失,并且有时会在页面几次重新加载后显示。

对我来说,这看起来像是数据库连接出现问题。

托管使用MySQL 5.5.29,表是使用默认引擎InnoDB创建的。 Django 中的配置如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '?????????',
        'USER': '?????????',
        'PASSWORD': '??????????',
        'ATOMIC_REQUESTS': True,
        'CONN_MAX_AGE': 0,
}

}

我尝试改变 CONN_MAX_AGEATOMIC_REQUESTS参数但没有帮助。

什么会导致这种行为?

最佳答案

这听起来不像是数据库连接问题,这听起来像是以下问题之一:

  • 缓存
  • 您修改了 python 文件,但尚未重新启动 Web 服务器进程(例如 Apache)来更新 python 文件。

我建议您尝试使用以下方法之一在托管 Web 服务器上重新加载 Python 文件:

$ touch wsgi.py

$ sudo service apache2 restart

我假设您的 Web 服务器是 Apache,否则请使用适当的命令重新启动您的 Web 服务器。

关于python - Django + InnoDB : random failure of model reading,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23643998/

相关文章:

mysql - 使用 awk 从未知数据库表中选择所有用户

php - 如何使用php在mysql中同时插入动态输入值将一个表复制到另一个表

django - 如何获得通用 View 的反向URL?

python - django 中的类别-子类别下拉列表

python - Geoalchemy2 和 ST_Within - 点和多边形之间的类型不匹配?

python - 将大型 csv 转换为稀疏矩阵以在 sklearn 中使用

python - 创建后调整 wx.ListCtrl 的大小

mysql - 错误[主]工具.ImportTool : Imported Failed: No enum constant org. apache.hadoop.mapreduce.JobCounter.MB_MILLIS_MAPS

django - 尽管有 pytz 和 mysql 时区,但 QuerySet.dates() 无效

python - 将 python 集转换为 XML 元素