[英]How to clean PostgreSQL database created with Phoenix/Ecto
我開始玩Ecto試圖理解它。 正如預期的那樣,我搞砸了(使用用戶模型),我在運行遷移時遇到錯誤:
(Postgrex.Error) ERROR (duplicate_table): relation "users" already exists
現在,我想使用shell / PgAdmin III清理數據庫,以便我可以修復我的模型並再次運行遷移。 我已經設置了PgAdmin,但我無法看到任何“用戶”表...這樣做的最佳方式是什么(使用Ecto,PostgreSQL shell還是PgAdmin)?
使用ecto,您可以在項目中獲得一些新的混合任務來處理數據庫。 他們可能會幫助你:
mix ecto.create
- 創建存儲庫用作后端的數據庫 mix ecto.migrate
- 運行存儲庫的掛起遷移 mix ecto.drop
- 刪除數據庫 還有一些新的任務,但這三個將解決您的問題。 嘗試使用mix --help
來完成其他新任務。 在你的情況下:首先運行mix ecto.drop
以刪除數據庫, mix ecto.create
再次重新創建它,最后mix ecto.migrate
以遷移表,然后你又回來了。
我已經設置了一些鍵盤快捷鍵來更快地輸入這些命令:
mec
是mix ecto.create
的別名 mem
是mix ecto.migrate
的別名 med
是mix ecto.drop
的別名 如果所有表(視圖,序列,...)都歸同一個用戶所有,那么
drop owned by foobar;
是最快的方法(foobar是擁有一切的Postgres用戶的名字)。 這將真正放棄該用戶擁有的所有內容,無論其如何創建。 如果由於某種原因你用超級用戶(通常是postgres
)創建了所有東西,你也不能使用它 - 但你不應該將它用於“常規”的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.