postgres
我以用户身份连接到数据库postgres
:
docker exec -it mycontainer psql -h localhost -U postgres
我看到了数据库:
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+--------------------
---
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
srdb | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =Tc/postgres
+
| | | | | postgres=CTc/postgr
es+
| | | | | sruser=CTc/postgres
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres
+
| | | | | postgres=CTc/postgr
es
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres
+
| | | | | postgres=CTc/postgr
es
(4 rows)
我想删除一个表,但什么也没发生:
postgres=# DROP DATABASE srdb
也许有其他人连接上了?我们来检查一下:
postgres-# SELECT * FROM pg_stat_activity
没有什么!
我究竟做错了什么?
答案1
SQL 语句可能跨越多行,因此需要用分号;
(或较少使用的元命令\g
)标记语句的结束
您的DROP DATABASE srdb
和 均未发送到服务器SELECT * FROM pg_stat_activity
,就 psql 而言,它是一个未完成的单个语句。还请注意-#
第二行的提示与=#
第一行的 有何不同:它是一个辅助提示,表示输入的延续,请参阅在 psql 中提示。