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 命令的不同方式:
例如,-i 命令会在删除前要求确认。因此,你可以根据需要使用不同的语法。
另外,请记住,一旦数据库被删除,我们就无法恢复它。这就是为什么我们必须在发出命令之前使用确认标志。
结论
我们希望你今天了解了为 PostgreSQL 数据库中存在的数据库发出 DROP 命令的不同方法。这些可以以任何需要的方式使用。
但是,在某些情况下,最好检查是否存在所有先决条件,例如在 CMD shell 的情况下,环境变量必须事先存在。