2015-04-21 112 views
2

我試圖將我的Django應用程序部署到Heroku。遷移在我的本地Git中。當我嘗試:在django syncdb傳遞後,Heroku出現「no such table」錯誤

git push heroku master 
heroku run python manage.py syncdb 

它應用遷移,也promts我創造的超級用戶,這是我做成功。現在,應用程序啓動和運行,但是當我嘗試登錄到admin它拋出:

OperationalError no such table: user_user 

當我嘗試

heroku run python manage.py makemigrations  
heroku run python manage.py migrate 
heroku run python manage.py createsuperuser 

它適用於所有遷移,但未能創造超級投擲:

django.db.utils.OperationalError: no such table: user_user 

無論哪種方式,我不能讓我的數據庫設置和遷移Heroku。

我的數據庫設置爲:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 
    } 
} 

我的用戶模型是:

class User(AbstractUser): 
    rating = models.PositiveIntegerField(default=settings.DEFAULT_USER_RATING) 

Django的版本是1.7.1。

如何獲取在Heroku上創建的數據庫表?

+0

我不明白你的問題。你說運行'migrate'應用遷移。那麼,這樣做,而不是syncdb,反正它已被棄用。 –

+0

我已經更新了這個問題變得更清楚。這個問題既不是syncdb也不是遷移幫助在heroku上設置數據庫。試圖登錄到Django管理員時,我仍然面臨「沒有這樣的表:user_user」。 –

+0

[Heroku創建的表可能重複,但是當我將遷移時,他說不創建](http://stackoverflow.com/questions/15467389/heroku-created-table-but-when-ill-migrate-他說,沒有創建) –

回答

5

您不能在Heroku上使用sqlite3。

sqlite將數據庫存儲爲磁盤上的文件。但Heroku dyno中的文件系統不是持久的,並且不在dynos之間共享。所以,當你做heroku run python manage.py migrate時,Heroku會用一個空白數據庫旋轉一個新的dyno,運行遷移,然後刪除dyno和數據庫。運行您的網站的測試儀不受影響,並且永遠不會遷移。

您必須使用其中一個Heroku數據庫加載項。 Postgres有一個免費的分層。您應該使用dj-database-url庫來根據Heroku設置的環境變量動態設置數據庫設置。

此外,出於同樣的原因,您必須在本地執行manage.py makemigrations,將結果提交給git,然後推送到Heroku。

+0

我現在看到。謝謝丹尼爾。 –

+0

使其運行的詳細步驟:http://stackoverflow.com/a/372​​11806/895245 –

0

你正在使用什麼版本的Django ..?

如果您正在使用Django> = 1.7,你需要運行migrate

加入模型後,您需要做的 python manage.py makemigrations然後python manage.py migrate

如果您的項目已經包含了遷移,你可以直接運行python manage.py migrate命令。

如果您錯過了上述任何步驟,請執行此操作。

+0

Django版本是1.7.1。我已更新問題文本 - 遷移應用遷移,但是在此之後,createuperuser將失敗。 –

2

您可以使用PostgreSQL的

settings.py附加(在文件的結尾):

# ie if Heroku server 
if 'DATABASE_URL' in os.environ: 
    import dj_database_url 
    DATABASES = {'default': dj_database_url.config()} 

requirements.txt附加:

dj-database-url 
psycopg2 

現在你可以運行: heroku run python manage.py migrate

相關問題