如何在 H2 中删除数据库?

How to drop database in 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)

好像没有语法错误。请帮忙

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

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

DROP TABLE TABLE_NAME;

Drop Schema:Drop Schema 是一个从数据库服务器中删除相应模式的命令。它不适用于当前架构。

DROP SCHEMA SCHEMA_NAME;

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

DROP ALL OBJECTS DELETE FILES;
SHUTDOWN;

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

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

DROP SCHEMA schemaName;

其中 schemaName 是您的架构名称。

注意:无法删除 PUBLIC 架构,并且没有命令可以立即清除其所有内容。但是有一个命令可以删除数据库中的所有其他对象,是一样的

DROP ALL OBJECTS

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

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