在 PostgreSQL 中通過 PSQL 刪除資料庫

Bilal Shahid 2024年2月15日
  1. 使用 DROP 命令通過 PSQL 刪除資料庫
  2. 使用 DROPDB 作為 PSQL 命令的 Shell 替代方案
  3. まとめ
在 PostgreSQL 中通過 PSQL 刪除資料庫

有兩種方法可以訪問 PostgreSQL 物件和系統中的資料庫。一種是通過介面,例如 PGADMIN 之類的圖形介面,另一種是基本的命令列工具 psql。

今天,我們將研究發出 DROP DATABASE 命令的 Psql 版本以及它在 PGADMIN 中的工作方式。

使用 DROP 命令通過 PSQL 刪除資料庫

首先,從下面的檔案路徑中開啟 Psql。

C:/Program Files/PostgreSQL/14/bin (instead of 14, you might have a different version)

從搜尋欄中開啟 CMD,然後執行命令:

C:\Users\[Your User]>cd C:/Program Files/PostgreSQL/14/bin

現在,鍵入以下內容:

C:\Program Files\PostgreSQL\14\bin>psql -U postgres

如果你不明白髮生了什麼。我們建議你先閱讀 Psql 設定和命令。

你將被要求輸入 Postgres 的 PASSWORD,完成後,按回車鍵。

你現在將在你的 PostgreSQL 伺服器中。要檢視所有資料庫,請寫出以下命令:

\l

此命令將列出你當前在伺服器上的所有資料庫。

作為旁註,請確保不要修改或刪除任何你不知道的資料庫,因為這可能有害並導致工作丟失。按照教程進行操作,不要冒險進入未知領域。

所以在本教程中,當前的資料庫是:

輸出:

資料庫檢視

假設我們想要 DROP postgres 資料庫。我們可以實現這一點,如下所示。

DROP DATABASE postgres;

如果 user 不起作用,你可以發出的另一個命令是使用以下命令。

psql -U <user>  -c "drop DATABASE [DATABASE NAME]"

確保在末尾包含一個分號。

該命令將 DROP 你的資料庫並有效地工作。但是,如果 DATABASE 當前已開啟或最後被多個使用者訪問,它將返回錯誤。

ERROR:  cannot drop the currently open DATABASE

因此,請在刪除資料庫之前關閉你的資料庫並儲存你的工作。

使用 DROPDB 作為 PSQL 命令的 Shell 替代方案

許多使用者會從 Psql 發出 DROPDB 命令而不是 CMD(命令提示符),這是錯誤的。

你必須開啟 CMD 來執行這個命令來 DROP 資料庫。讓我們學習如何做到這一點。

在 Windows 中搜尋環境變數。在下面的框中,單擊環境變數

搜尋環境變數

點選 NEW 新增新值的路徑。

新使用者變數

VARIABLE PATH 中,輸入 BINPATHLIB 資料夾,這將是:

C:\Program Files\PostgreSQL\14\bin
                  C:\Program Files\PostgreSQL\14\lib

按 Enter 並關閉。

在 CMD 中,使用以下命令輸入 BIN 資料夾。

cd C:\Program Files\PostgreSQL\14\bin

發出以下命令。

DROPBD [DATABASE NAME]

此命令將根據需要刪除資料庫。以上所有內容都是為了確保你的系統在發出 DROPDB 命令時不會出現錯誤。

強制斷開連線並使用 DROPDB 作為 PSQL 命令的 Shell 替代方案

我們假設你的系統尚未設定環境變數。如果這樣做,請保持原樣或將它們編輯為以下配置。

如果你想在發出 DROP 命令時使用強制斷開資料庫,你可以在 shell CMD 中使用 -f 關鍵字,在資料庫中使用 FORCE

對於 CMD 中的 DROP 命令:

DROPBD -f [DATABASE NAME]

對於資料庫介面或 PGADMIN 中的 DROP 命令,請使用以下命令:

drop database postgres with (FORCE)

FORCE 終止與資料庫的所有現有連線,在呼叫 DROP 命令之前是必不可少的。 -f 也是如此。

或者,要切斷所有現有連線,你可以繼續使用以下命令發出 PROCESS TERMINATION 命令:

select pg_terminate_backend([process id]) from pg_stat_activity where datname='database name';

使用它會終止在後臺執行的 Postgres 伺服器的當前會話。在此之後,你可以發出 DROP 命令來刪除資料庫。

發出 DROP 命令的另一種方法是通過配置 pg_hba.conf 檔案來限制對資料庫的訪問。但是,這是最不推薦的。

最好通過重新啟動伺服器並呼叫 DROP 命令來切斷連線。此外,請確保沒有其他使用者在資料庫上進行操作,一旦刪除資料庫就會丟失。

使用 DROPDB 作為 Ubuntu 使用者的 PSQL 命令的 Shell 替代方案

對於 Ubuntu 中的使用者,你可以發出以下命令。

連線請求:

sudo -i -u postgres psql

使用 \l 檢視可用的資料庫,

postgres=#  \l

並且使用 DROP DATABASE [database_name] 命令,你可以刪除資料庫。

你可以在刪除資料庫之前使用 IF EXISTS 命令檢查資料庫是否已經存在,因為如果不存在,DATABASE DROP 命令將返回錯誤。

以下是使用 Postgres 命令的不同方式:

Postgres 命令

例如,-i 命令會在刪除前要求確認。因此,你可以根據需要使用不同的語法。

另外,請記住,一旦資料庫被刪除,我們就無法恢復它。這就是為什麼我們必須在發出命令之前使用確認標誌。

まとめ

我們希望你今天瞭解了為 PostgreSQL 資料庫中存在的資料庫發出 DROP 命令的不同方法。這些可以以任何需要的方式使用。

但是,在某些情況下,最好檢查是否存在所有先決條件,例如在 CMD shell 的情況下,環境變數必須事先存在。

作者: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

相關文章 - PostgreSQL Database