如何在H2中删除数据库?

问题描述

我使用sql语句DROP DATABASE KEYCLOAK;,这会在h2控制台中引发语法错误

错误

drop database keycloak;
Syntax error in sql statement "DROP DATABASE[*] KEYCLOAK "; expected "TABLE,INDEX,USER,SEQUENCE,CONSTANT,TRIGGER,VIEW,ROLE,ALIAS,SCHEMA,ALL,DOMAIN,TYPE,DATATYPE,AGGREGATE"; sql statement:
drop database keycloak [42001-193] 42001/42001 (Help)

语法上似乎没有任何错误。请帮忙。

解决方法

如果您确实需要在H2 Console中删除整个数据库,请使用

DROP ALL OBJECTS DELETE FILES;
SHUTDOWN;

在执行SHUTDOWN命令后,您将看到“数据库已关闭”错误或类似的错误,应将其忽略。

如果只想删除模式(在某些其他DBMS中,“数据库”一词用于模式,但是在H2中它们是不同的东西),请使用

DROP SCHEMA schemaName;

其中schemaName是您的架构的名称。

注意:PUBLIC模式不能删除,也没有命令立即清除其所有内容。但是有一条命令可以删除数据库中的所有其他对象,它是相同的

DROP ALL OBJECTS

命令,但没有DELETE FILES子句。它仅保留当前用户,PUBLIC角色和空的PUBLIC模式(该模式的内容已删除)。

所有这些命令都是破坏性的,无法回滚。

,

您可能会遇到错误,因为您正试图删除不存在的数据库。尝试以下选项。

Drop Table:Drop Table是删除相应表及其结构的命令。

DROP TABLE TABLE_NAME;

Drop Schema:Drop Schema是从数据库服务器删除相应架构的命令。从当前架构上将无法使用。

DROP SCHEMA SCHEMA_NAME;