如何在H2中删除数据库?

Rah*_*hul 2 h2 keycloak

我使用 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)
Run Code Online (Sandbox Code Playgroud)

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

Evg*_*nov 9

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

\n
DROP ALL OBJECTS DELETE FILES;\nSHUTDOWN;\n
Run Code Online (Sandbox Code Playgroud)\n

执行命令后,您将看到 \xe2\x80\x9cDatabase is already close\xe2\x80\x9d 错误或类似的错误SHUTDOWN,应将其忽略。

\n

如果您只想删除您的模式(在某些其他 DBMS 中, \xe2\x80\x9cdatabase\xe2\x80\x9d 术语用于模式,但在 H2 中它们是不同的东西),请使用

\n
DROP SCHEMA schemaName;\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n
DROP ALL OBJECTS\n
Run Code Online (Sandbox Code Playgroud)\n

命令,但不带DELETE FILES子句。它仅保留当前用户、PUBLIC角色和空PUBLIC架构(此架构的内容将被删除)。

\n

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

\n