在 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 的情况下,环境变量必须事先存在。
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