2016-11-26 47 views
0

據我所知運行 $ Heroku的執行python manage.py遷移的Heroku + Django的migrate命令不會創建任何表

從models.py創建所有表時。但是我的輸出看起來不一樣:表格沒有創建,甚至沒有提到。

Operations to perform: 
    Apply all migrations: findCharge 

Running migrations: 
    Applying findCharge.0001_initial... OK 
    Applying findCharge.0002_auto_20161124_1729... OK 
    Applying findCharge.0003_auto_20161124_1955... OK 
    Applying findCharge.0004_chargepoints_description... OK 

反正當我打電話

$ heroku pg:psql and then ONYX=> \dt 

它看起來像創建表和關係列表「findCharge_chargepoints」。

… 
public | findCharge_chargepoints | table | owner_name 
… 

但是當我鍵入

ONYX=> SELECT * FROM findCharge_chargepoints; 
ERROR: relation "findcharge_chargepoints" does not exist 

我試圖不應用程序名稱運行「蟒蛇manage.py遷移」,但結果是一樣的。在推送到git之前,我在本地機器上運行「makemigrations」。我也能創建超級用戶,我可以打開https://my-app-name.herokuapp.com/admin並添加一些數據到數據庫,但我的應用程序不會看到這些數據。

有什麼建議嗎?我現在堅持3天,所以我會很感激任何幫助。

P.S.我使用heroku postgresql hobby-basic和postgis擴展。

P.P.S.從settings.py

數據庫設置:

DATABASES = { 
'default':{ 
    'ENGINE': 'django.contrib.gis.db.backends.postgis', 
    'NAME': 'charging_points', 
    'USER': 'postgres', 
    'PASSWORD': 'XXX', 
} 
} 

,並在文件

import dj_database_url 
DATABASES['default'] = dj_database_url.config() 
DATABASES['default']['ENGINE'] = "django.contrib.gis.db.backends.postgis" 
+0

可以顯示數據庫設置嗎? –

+0

如果它不使用默認的'公共'模式,那麼你可能還必須提供完整的'schema.table'路徑。 – shongololo

+0

丹尼爾羅斯曼,我剛剛添加這個信息的問題,如果它可以幫助。 – sHalnes

回答

1

我想我找到了解決辦法或者說是一種解決方案的結束。飯桌上,但去訪問它創建的我必須使用雙引號:

select * from "findCharge_chargepoints"; 

我沒想到它會通過遷移創建的其它表(如AUTH_USER,auth_group等)不需要任何qoutes。

+0

那是因爲你有一個大寫字母...... ** C **中的「C」。如果你不用雙引號,它可能會查找'findcharge_chargepoints'(注意小寫的「c」負責)。當你把雙引號括起來時,你可以說明你的表名和大寫/小寫。 – Sharky

+0

謝謝@Sharky,現在我明白了。 – sHalnes

+0

爲了澄清,因爲行爲對我來說有點不明顯:PostgreSQL標識符在技術上是區分大小寫的,但是當在DML或DDL中使用_unquoted_標識符時,PostgreSQL隱式地降低了它的情況。因此,'select * from AUTH_USER'被處理爲'select * from auth_user'並且工作正常,因爲表名是「auth_user」(而不是「AUTH_USER」)。但是,如果您從'AUTH_USER''選擇*,則查詢將失敗。所以,無論是用引用標識符創建你的'findCharge_chargepoints'表還是顯式的。 – bimsapi