簡體   English   中英

如何清理使用Phoenix / Ecto創建的PostgreSQL數據庫

[英]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以遷移表,然后你又回來了。

我已經設置了一些鍵盤快捷鍵來更快地輸入這些命令:

  • mecmix ecto.create的別名
  • memmix ecto.migrate的別名
  • medmix ecto.drop的別名

如果所有表(視圖,序列,...)都歸同一個用戶所有,那么

drop owned by foobar;

是最快的方法(foobar是擁有一切的Postgres用戶的名字)。 這將真正放棄該用戶擁有的所有內容,無論其如何創建。 如果由於某種原因你用超級用戶(通常是postgres )創建了所有東西,你也不能使用它 - 但你不應該將它用於“常規”的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM