HOWTO · PostgreSQL

在 PostgreSQL 中通過 PSQL 刪除資料庫

本文介紹如何在 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 中,輸入 BIN 的 PATH 和 LIB 資料夾,這將是:

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 的情況下,環境變數必須事先存在。