2 回答

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
在每個(gè)連接上運(yùn)行硬編碼腳本不是處理模式管理的好方法。
您需要手動(dòng)管理模式,或者使用功能強(qiáng)大的工具將模式版本標(biāo)識(shí)符保留在數(shù)據(jù)庫(kù)中,進(jìn)行檢查,并應(yīng)用腳本來(lái)升級(jí)到下一個(gè)模式版本(如果該版本與最新版本不同)。Rails將此稱(chēng)為“遷移”,并且可以正常工作。如果您使用的是Django,它也具有模式管理功能。
如果您不使用這樣的框架,建議您編寫(xiě)自己的架構(gòu)升級(jí)腳本。用單行添加“ schema_version”表。SELECT
它當(dāng)應(yīng)用程序第一次啟動(dòng)時(shí)重新部署后,如果它比當(dāng)前版本的應(yīng)用程序知道較低,為了,例如應(yīng)用更新腳本(S) schema_1_to_2
,schema_2_to_3
等等。
我不建議在連接時(shí)執(zhí)行此操作,也不建議在應(yīng)用啟動(dòng)時(shí)執(zhí)行此操作,或者最好將其作為特殊的維護(hù)命令執(zhí)行。如果在每個(gè)連接上都執(zhí)行此操作,則將有多個(gè)連接嘗試進(jìn)行相同的更改,并且將出現(xiàn)重復(fù)的列和各種其他混亂情況。

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
我使用Postgres在heroku上支持幾個(gè)django應(yīng)用程序。我只是通過(guò)PgAdmin連接并在需要更改時(shí)運(yùn)行腳本。我認(rèn)為每次建立連接時(shí)都不需要運(yùn)行腳本。
添加回答
舉報(bào)