新聞中心
所有 Django 支持的數(shù)據(jù)庫后端都支持遷移,還有些支持表修改(通過 SchemaEditor 類實(shí)現(xiàn))的第三方后端也支持。

我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、立山ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的立山網(wǎng)站制作公司
然而,有些數(shù)據(jù)庫在表結(jié)構(gòu)變更方面比其它數(shù)據(jù)庫更強(qiáng);下面介紹一些注意事項。
PostgreSQL
PostgreSQL 在架構(gòu)支持方面是所有數(shù)據(jù)庫中是最強(qiáng)的。
唯一需要注意的是,在 PostgreSQL 11 之前,添加具有默認(rèn)值的列會導(dǎo)致表的完全重寫,時間長短與表的大小成正比。 因此,建議你始終使用 ?null=True? 創(chuàng)建新列,因?yàn)檫@樣可以立即添加它們。
MySQL
MySQL 缺乏對架構(gòu)變更操作相關(guān)事務(wù)的支持,這意味著如果遷移失敗,你將必須手動取消更改才能重試(無法回滾到較早的時間)。
此外,MySQL 幾乎每一次架構(gòu)操作都會完全重寫表,一般來說,增加或刪除列需要的時間與表的行數(shù)成正比。在速度較慢的硬件上,這可能比每百萬行一分鐘還要糟糕——在一個只有幾百萬行的表中添加幾列,可能會讓你的網(wǎng)站鎖定十幾分鐘。
最后,MySQL 對列、表和索引的名稱長度有相對較小的限制,并且對索引涵蓋的所有列的組合大小也有限制。 這意味著在其他后端上創(chuàng)建的索引將可能無法在 MySQL 下創(chuàng)建。
SQLite
SQLite 幾乎沒有內(nèi)置的架構(gòu)更改支持,因此 Django 嘗試通過以下方式對其進(jìn)行模擬:
- 使用新架構(gòu)創(chuàng)建新表
- 復(fù)制數(shù)據(jù)
- 刪除舊表
- 重新命名新表,使之與原表名相匹配。
此過程一般工作的很好,但它可能很慢,偶爾也會出現(xiàn)問題。除非你非常清楚風(fēng)險和它的局限性,否則不建議你在生產(chǎn)環(huán)境中運(yùn)行和遷移 SQLite;Django 自帶的支持是為了讓開發(fā)人員在本地計算機(jī)上使用 SQLite 來開發(fā)較不復(fù)雜的 Django 項目,而無需完整的數(shù)據(jù)庫。
新聞標(biāo)題:創(chuàng)新互聯(lián)Django4.0教程:Django4.0遷移-后端支持
瀏覽地址:http://m.fisionsoft.com.cn/article/cdicosg.html


咨詢
建站咨詢
