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