问题描述
我使用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;