h2 SCRIPT命令的错误“ CREATE SEQUENCE”行

时间:2019-08-31 14:28:41

标签: java h2

在我的Java应用程序中,我使用SCRIPT命令备份了某些表。当我尝试将此生成的备份脚本还原到现有数据库时,出现错误

Sequence "SYSTEM_SEQUENCE_6DBC2231_8C34_46B3_9CB9_2BC9E42CECA2" already exists

似乎“ SCRIPT”命令正在为数据库中的每个系统序列生成一个“ CREATE SEQUENCE”行。不仅针对选择要备份的表的顺序,而且还针对所有表的所有顺序。因此,在还原时,备份脚本尝试为未修改的表创建序列,但失败。当然可以。

这是SCRIPT命令中的错误还是我缺少什么?

2 个答案:

答案 0 :(得分:0)

我不认为这是SCRIPT命令中的错误,正如它所说的那样。

  

从数据库中创建一个SQL脚本。

因此,当您第一次创建序列时,请确保它不存在以下序列的序列。

CREATE SEQUENCE IF NOT EXISTS

然后SCRIPT命令在备份脚本时应该复制相同的内容。

答案 1 :(得分:0)

也有人在GitHub上问了这个问题: #2094。 这是我对其他读者提到的问题的一些评论的副本:

SCRIPT不是备份命令,它是数据/元数据导出命令。但是,您可以将其用于备份目的。但是您需要一个新的空数据库才能将此类脚本加载到其中。

根据设计,它会从所有模式或仅从指定模式导出所有序列。

  1. 您可以使用SCRIPT命令的DROP子句。通过此子句,其他DROP TABLE命令将包含在该脚本中。 DROP TABLE命令还会删除自动创建的生成列序列。

  2. 您可以在DROP ALL OBJECTS命令之前执行RUNSCRIPT命令。

  3. 您可以关闭所有连接,删除数据库,创建一个新连接并在其中执行RUNSCRIPT