DROP DATABASE
功能描述
删除数据库。
注意事项
- 只有数据库所有者有权限执行DROP DATABASE命令,系统管理员默认拥有此权限。
- 不能对系统默认安装的三个数据库(gaussdb、TEMPLATE0和TEMPLATE1)执行删除操作,系统做了保护。如果想查看当前服务中有哪几个数据库,可以用gsql的\l命令查看。
- 如果有用户正在与要删除的数据库连接,则删除操作失败。如果要查看当前存在哪些数据库连接,可以通过视图v$session查看。
- 不能在事务块中执行DROP DATABASE命令。
- 如果执行DROP DATABASE失败,事务回滚,需要再次执行一次DROP DATABASE IF EXISTS。
- DROP DATABASE若提示database is being accessed by other users类错误,可能原因为CLEAN CONNECTION过程存在线程无法及时响应信号,出现连接清理不完全的情况,需要再次执行CLEAN CONNECTION。

- DROP对象操作(如DATABASE、USER/ROLE、SCHEMA、TABLE、VIEW等对象)存在数据丢失风险,尤其含带CASCADE级联删除场景,会将关联的对象一并删除,操作需谨慎,操作前需考虑数据备份。
- 更多开发设计规范参见总体开发设计规范。
语法格式
1
|
DROP DATABASE [ IF EXISTS ] database_name ; |
参数说明
参数 |
描述 |
取值范围 |
---|---|---|
IF EXISTS |
如果指定的数据库不存在时返回一个提示而不是错误。 |
- |
database_name |
需要删除的数据库名称。 |
已存在的数据库名称。 |
示例
删除名称为music的数据库。
1
|
DROP DATABASE music; |
常见问题
当执行DROP DATABASE语法时出现以下类似报错,表示待删除数据库被其他用户连接。
1
|
database "mysql_compatible_db" is being accessed by other users Detail: There are 2 other sessions using the database. |
可执行以下语法,先断开所有用户对该数据库建立的连接。
1
|
CLEAN CONNECTION TO ALL FORCE FOR DATABASE mysql_compatible_db; |
再重新执行DROP DATABASE,可删除成功(如删除失败,可以重复执行以上CLEAN CONNECTION再重试)。
1
|
DROP DATABASE mysql_compatible_db; |