【问题标题】:Heroku not migrating with new fieldsHeroku 没有迁移到新领域
【发布时间】:2019-07-28 02:58:53
【问题描述】:

我一直在本地机器上工作,最近我在现有模型中添加了一些字段。

我今天早上试图在 Heroku 上推送它并进行迁移,这是我得到的消息:

我的模型.py

Class Todo(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE,verbose_name="Nom de l'utilisateur")
    text = models.CharField(max_length=150, verbose_name="Nom de la Todo")
    content = models.TextField(verbose_name="Description supplémentaire",null=True, blank=True)
    date_posted = models.DateTimeField(default=timezone.now)
    complete = models.BooleanField(default=False)
    recurrence = models.BooleanField(default=False)
    urgence = models.BooleanField(default=False,verbose_name="Tâche urgente")

    def __str__(self):
        return self.text
def get_absolute_url(self):
    return reverse('dashboard-home')

Todo.reccurence 是新字段。

追溯:

Environment:


Request Method: GET
Request URL: 

Django Version: 2.1.7
Python Version: 3.6.7
Installed Applications:
['blog.apps.BlogConfig',
 'dashboard.apps.DashboardConfig',
 'users.apps.UsersConfig',
 'crispy_forms',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'storages',
 'cloudinary']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'whitenoise.middleware.WhiteNoiseMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']


Template error:
In template /app/blog/templates/blog/base.html, error at line 0
   column dashboard_todo.recurrence does not exist
LINE 1: ...todo"."date_posted", "dashboard_todo"."complete", "dashboard...
                                                             ^

   1 : {% load crispy_forms_tags %}
   2 : <!DOCTYPE html>
   3 : <html>
   4 : <head>
   5 : 
   6 :   <!-- Global site tag (gtag.js) - Google Analytics -->
   7 : <script async src="https://www.googletagmanager.com/gtag/js?id=UA-134278636-1"></script>
   8 : <script>
   9 :   window.dataLayer = window.dataLayer || [];
   10 :   function gtag(){dataLayer.push(arguments);}


Traceback:

File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py" in _execute
  85.                 return self.cursor.execute(sql, params)

The above exception (column dashboard_todo.recurrence does not exist
LINE 1: ...todo"."date_posted", "dashboard_todo"."complete", "dashboard...
                                                             ^
) was the direct cause of the following exception:

File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  156.                 response = self.process_exception_by_middleware(e, request)

File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  154.                 response = response.render()

File "/app/.heroku/python/lib/python3.6/site-packages/django/template/response.py" in render
  106.             self.content = self.rendered_content

File "/app/.heroku/python/lib/python3.6/site-packages/django/template/response.py" in rendered_content
  83.         content = template.render(context, self._request)

File "/app/.heroku/python/lib/python3.6/site-packages/django/template/backends/django.py" in render
  61.             return self.template.render(context)

File "/app/.heroku/python/lib/python3.6/site-packages/django/template/base.py" in render
  171.                     return self._render(context)

File "/app/.heroku/python/lib/python3.6/site-packages/django/template/base.py" in _render
  163.         return self.nodelist.render(context)

File "/app/.heroku/python/lib/python3.6/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "/app/.heroku/python/lib/python3.6/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "/app/.heroku/python/lib/python3.6/site-packages/django/template/loader_tags.py" in render
  150.             return compiled_parent._render(context)

File "/app/.heroku/python/lib/python3.6/site-packages/django/template/base.py" in _render
  163.         return self.nodelist.render(context)

File "/app/.heroku/python/lib/python3.6/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "/app/.heroku/python/lib/python3.6/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "/app/.heroku/python/lib/python3.6/site-packages/django/template/loader_tags.py" in render
  62.                 result = block.nodelist.render(context)

File "/app/.heroku/python/lib/python3.6/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "/app/.heroku/python/lib/python3.6/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "/app/.heroku/python/lib/python3.6/site-packages/django/template/defaulttags.py" in render
  166.             len_values = len(values)

File "/app/.heroku/python/lib/python3.6/site-packages/django/db/models/query.py" in __len__
  250.         self._fetch_all()

File "/app/.heroku/python/lib/python3.6/site-packages/django/db/models/query.py" in _fetch_all
  1186.             self._result_cache = list(self._iterable_class(self))

File "/app/.heroku/python/lib/python3.6/site-packages/django/db/models/query.py" in __iter__
  54.         results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)

File "/app/.heroku/python/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in execute_sql
  1065.             cursor.execute(sql, params)

File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py" in execute
  100.             return super().execute(sql, params)

File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py" in execute
  68.         return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)

File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py" in _execute_with_wrappers
  77.         return executor(sql, params, many, context)

File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py" in _execute
  85.                 return self.cursor.execute(sql, params)

File "/app/.heroku/python/lib/python3.6/site-packages/django/db/utils.py" in __exit__
  89.                 raise dj_exc_value.with_traceback(traceback) from exc_value

File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py" in _execute
  85.                 return self.cursor.execute(sql, params)

Exception Type: ProgrammingError at /
Exception Value: column dashboard_todo.recurrence does not exist
LINE 1: ...todo"."date_posted", "dashboard_todo"."complete", "dashboard...
                                                             ^

我通常做的是删除本地计算机上的数据库并再次运行迁移,但我真的无法使用真实数据执行此操作。

谢谢

【问题讨论】:

  • “我通常做的是在我的本地机器上删除数据库并再次运行迁移,但我真的不能用真实数据这样做。”——你可能不应该在开发中经常这样做, 任何一个。重要的是您的迁移从数据库的先前状态正常工作。您是否确保提交新的迁移?您是否注意不删除或修改任何旧迁移?
  • 你找到这个问题的答案了吗。我也有同样的错误

标签: python django heroku django-models django-migrations


【解决方案1】:

您不应该在 Heroku 上运行 makemigrations。在本地执行,提交结果,然后在 Heroku 上运行 migrate。

【讨论】:

  • 实际上我做到了,一切正常,直到我将项目推送到 Heroku。当我看到错误时,我尝试了 makemigrations 并迁移
  • 请在问题中以文本形式发布完整的回溯(单击“切换到复制和粘贴视图”)。
猜你喜欢
  • 1970-01-01
  • 2019-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多