如何在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;

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...