【问题标题】:django - manage.py error in productiondjango - 生产中的manage.py错误
【发布时间】:2013-05-12 09:47:39
【问题描述】:

我刚刚部署了第一次使用 MySQL 作为数据库的 django 应用程序。在开发中,我使用 sqlite3 和 south 进行迁移。

我想我将使用python manage.py syncdb 然后python manage.py migrate 来初始化数据库。但是,当我第一次在生产环境中运行 python manage.py syncdb 时,出现以下错误:

DatabaseError: 关系“utils_message”不存在 第 1 行:...sage"."message_type", "utils_message"."text" FROM "utils_mes...

我会错过什么?会不会是某种循环依赖?

我的 INSTALLED_APPs 设置如下所示:

INSTALLED_APPS = (
     'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions',
     'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles',
     'south', 'django.contrib.admin',  'mainapp', 'employerprofile', 'applicantprofile',
     'companies', 'postings', 'utils', 'searchjobs', 'comments', 'projectapp',
     'cart',  'applications', 'packages', 'feedback', 'cvbank', 'staffpostings',
     'logs',
     # Uncomment the next line to enable admin documentation:                       
     # 'django.contrib.admindocs',                                                     
)

【问题讨论】:

  • 您是否在 MySQL 中创建了数据库(在 settings.py 中命名为 `DATABASES['default']['NAME'])?
  • 是的,数据库存在,django db用户拥有所有权限。
  • 您的数据库包含旧表架构? Django 无法更新模式(即:在已经同步的现有模型上添加新字段是不可能使用 ./manage syncdb 的),它只能从头开始创建它(您可以使用 South 迁移和更新旧模式)
  • 没有现有架构。数据库为空。我想第一次初始化数据库。
  • 在开发和生产中使用不同的数据库是一种不好的做法。能否请您展示您的INSTALLED_APPS 和模型?

标签: mysql django manage.py


【解决方案1】:

解决了这个问题。这是由模型之间的依赖性引起的。

我对@9​​87654321@ 进行了grep,发现postings 应用程序中模型中的一个字段依赖于utils 应用程序中Message 模型的实例作为其默认值,即:

from utils.models import Message
...
default_message = Message.objects.get(message_type='application-receipt-message').text
...
class Posting(models.Model):
    ....
    receipt_message = models.TextField(default=default_message)
    ...

所以我把default_message改成了空字符串,python manage.py syncdb后跟python manage.py migrate,就没有遇到更多问题了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 2019-01-23
    • 2016-03-15
    • 1970-01-01
    相关资源
    最近更新 更多