亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將PostgreSQL模式更新并部署到Heroku

將PostgreSQL模式更新并部署到Heroku

catspeake 2021-04-01 05:41:48
我有一個PostgreSQL模式,該模式駐留在一個schema.sql文件中,該文件每次在Python中啟動數據庫連接時都會運行??雌饋硐瘢篊REATE TABLE IF NOT EXISTS users (    id SERIAL PRIMARY KEY,    facebook_id TEXT NOT NULL,    name TEXT NOT NULL,    access_token TEXT,    created TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW());該應用程序使用他們的PostgreSQL部署在Heroku上,并且一切正?!,F在,如果我想稍微更改users表的結構該怎么辦?我該怎么做最簡單,最好的方法?我想為要在數據庫ALTER...中schema.sql進行的每個更改寫一行,但是我認為這不是最好的方法,因為一段時間后,模式文件將充滿ALTERs,這將減慢我的應用程序的速度。指示對數據庫進行更改的部署方式是什么?
查看完整描述

2 回答

?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

在每個連接上運行硬編碼腳本不是處理模式管理的好方法。

您需要手動管理模式,或者使用功能強大的工具將模式版本標識符保留在數據庫中,進行檢查,并應用腳本來升級到下一個模式版本(如果該版本與最新版本不同)。Rails將此稱為“遷移”,并且可以正常工作。如果您使用的是Django,它也具有模式管理功能。

如果您不使用這樣的框架,建議您編寫自己的架構升級腳本。用單行添加“ schema_version”表。SELECT它當應用程序第一次啟動時重新部署后,如果它比當前版本的應用程序知道較低,為了,例如應用更新腳本(S) schema_1_to_2schema_2_to_3等等。

我不建議在連接時執行此操作,也不建議在應用啟動時執行此操作,或者最好將其作為特殊的維護命令執行。如果在每個連接上都執行此操作,則將有多個連接嘗試進行相同的更改,并且將出現重復的列和各種其他混亂情況。


查看完整回答
反對 回復 2021-04-06
?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

我使用Postgres在heroku上支持幾個django應用程序。我只是通過PgAdmin連接并在需要更改時運行腳本。我認為每次建立連接時都不需要運行腳本。


查看完整回答
反對 回復 2021-04-06
  • 2 回答
  • 0 關注
  • 224 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號