開發(fā)人員經(jīng)常會犯了一個錯誤,這個錯誤導(dǎo)致從登臺數(shù)據(jù)庫中刪除每個表。從好的方面來說,這不是生產(chǎn)數(shù)據(jù)。好在沒有客戶數(shù)據(jù)受到損害。暫存數(shù)據(jù)庫由Amazon RDS快照在20分鐘內(nèi)恢復(fù),并且僅在內(nèi)部使用。無論如何,請注意生產(chǎn)狀態(tài)命令。在開發(fā)階段緩存配置和路由通常會導(dǎo)致意外行為。如果您不清除路由緩存,可能會浪費一些時間來了解為什么未發(fā)生“ 404頁面未找到”的情況。配置緩存是一個有趣的發(fā)現(xiàn)。
功能1:config:cache
如果您php artisan config:cache在Laravel應(yīng)用程序中運行,它將生成一個bootstrap/cache/config.php文件,其中包含config/*.php文件夾中的所有配置。目的是通過將設(shè)置緩存在準備就緒狀態(tài)來加快Laravel的引導(dǎo)過程。
功能2:RefreshDatabase
Laravel 5.5附帶了一個稱為的新特性RefreshDatabase和一個名為的出色遷移命令migrate:fresh。該特征只會遷移一次,然后使用事務(wù)來加快測試套件的速度,但是它將在啟動之前刪除所有現(xiàn)有表。當然,它是用于sqlite :memory:或本地數(shù)據(jù)庫。
沖突
您的本地環(huán)境設(shè)置為使用與每個開發(fā)人員共享的登臺數(shù)據(jù)庫。這樣做的原因是因為您要測試功能的性能,并且登臺數(shù)據(jù)庫具有一些相當好的數(shù)據(jù)集來對此進行測試。但是,由于要測試性能,你顯然要緩存的路徑和配置。
您對結(jié)果感到滿意。現(xiàn)在該繼續(xù)下一個功能了。作為TDD愛好者,您編寫一個新測試并運行它以查看它在哪里中斷。它失敗。太好了,現(xiàn)在就實施它。屋子里有人大喊—? 伙計們,登臺數(shù)據(jù)庫發(fā)生了什么?
您的測試套件未:memory:從中加載您的 價值phpunit.xml。不需要,因為bootstrap/cache/config.php具有所有必要的設(shè)置。遺憾的是,設(shè)置不正確。
您進入Amazon控制臺并在過去5分鐘內(nèi)恢復(fù)快照。在15到20分鐘內(nèi),重新運行環(huán)境不會造成永久損壞。
善后
在學(xué)習了如何炸毀意外數(shù)據(jù)庫之后,讓我們學(xué)習如何保護它。
1-101:刪除權(quán)限
別偷懶 為您的項目設(shè)置一個沒有DROP臨時環(huán)境權(quán)限的新數(shù)據(jù)庫用戶。
2-測試設(shè)置白名單
CreatesApplication特點是檢查特定設(shè)置是否預(yù)期或不完美的地方。它在測試套件之間共享,并在設(shè)置數(shù)據(jù)庫之前執(zhí)行。
這將確保如果您搞砸了,則意外的環(huán)境將不會受到影響。
3- [獎金]使調(diào)試更加容易
您的環(huán)境受到保護。一切就緒。這不會再發(fā)生。但是,下次您緩存設(shè)置并忘記設(shè)置時,測試將告訴您設(shè)置錯誤。您可能會phpunit.xml困惑地看待該文件,甚至可能怎么辦。為了使將來的事情變得簡單明了,多了3行代碼可以節(jié)省一些調(diào)試時間。
結(jié)論
第二天,我在站立會議上報告說,我已經(jīng)測試了數(shù)據(jù)庫備份系統(tǒng)。他們的工作異常出色。從好的方面來說,我還報告說我不會再意外地對其進行測試。
上述就是關(guān)于如何銷毀登臺數(shù)據(jù)庫的全部內(nèi)容,想了解更多關(guān)于數(shù)據(jù)庫的信息,請繼續(xù)關(guān)注中培偉業(yè)。