簡體   English   中英

django makemigrations 和 migrate 在 heroku 服務器上不創建表

[英]django makemigrations and migrate on heroku server don't create tables

Python 2.7 版 Django 1.9.7 版

我在 heroku 上創建了一個 Django 應用程序。 我無法讓 heroku 服務器正確migrate 過去我在本地完成了所有的makemigrations ,然后將它們推送到服務器。 它在過去有效。 現在我想我會選擇在服務器端進行遷移,因為我根本沒有在本地運行這個應用程序。

我剛剛在models.py為應用程序'main'創建了一個新模型:

from __future__ import unicode_literals

from django.db import models

class InstagramPhotos(models.Model):
    imageId = models.IntegerField()
    userId = models.IntegerField()
    likes = models.IntegerField()
    captionText = models.CharField(max_length=200)
    image = models.ImageField()

將更改推送到服務器后,我運行了它,輸出如下:

heroku run python manage.py makemigrations main

在 ⬢ glacial-beach-50253 上運行 python manage.py makemigrations main... up, run.8354 'main' 的遷移:
0001_initial.py: - 創建模型 InstagramPhotos

好像沒問題吧? 那么我嘗試migrate ,正如您所知,它實際上會在數據庫中創建表:

heroku run python manage.py migrate

運行 python manage.py migrate on ⬢ glacial-beach-50253... up, run.7556 要執行的操作:應用所有遷移:auth、contenttypes、admin、sessions 運行遷移:沒有要應用的遷移。 您的模型具有尚未反映在遷移中的更改,因此不會被應用。 運行“manage.py makemigrations”來進行新的遷移,然后重新運行“manage.py migrate”來應用它們。

無論我嘗試重新運行makemigrations然后migrate多少次,它似乎仍然沒有找到它。 除了無法以這種方式在 heroku 服務器上運行之外,不知道為什么會發生這種情況? 我是否肯定需要在本地進行makemigrations並推送?

僅供參考,我只是在settings.py仍然定義了默認的 sqlite3 DB。

我有一個類似的問題。

我只是通過ssh進入 heroku dyno: heroku run bash (來自您的 heroku 應用程序文件夾 ofc )

如果需要,請使用 createsuperuser 運行所有遷移和 makemigration 命令。 為我使用 sqlite 和 postgre。

  1. 在本地運行這些命令

python manage.py makemigrations,,, Python manage.py migrate

2.提交你的代碼

3.push到heroku master

  1. 運行heroku run python manage.py makemigrations,,,, heroku run python manage.py migrate

你的問題應該得到解決

部署到 Heroku 時,我兩次遇到相同的錯誤。 在列出 app 目錄下的文件時,我發現缺少db.sqlite3文件,這是 django 創建 sql 表所必需的。 雖然它會自動在本地創建文件,但在運行 migrate 命令時並沒有在 heroku 上創建它。

這里有兩個選項:

  1. 在您的應用程序目錄下的 heroku 上創建 db.sqlite3 文件
  2. 在本地運行“python manage.py migrate”以創建db.sqlite3並將其推送到heroku repo

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM