在我的Java应用程序中,我使用SCRIPT命令备份了某些表。当我尝试将此生成的备份脚本还原到现有数据库时,出现错误
Sequence "SYSTEM_SEQUENCE_6DBC2231_8C34_46B3_9CB9_2BC9E42CECA2" already exists
似乎“ SCRIPT”命令正在为数据库中的每个系统序列生成一个“ CREATE SEQUENCE”行。不仅针对选择要备份的表的顺序,而且还针对所有表的所有顺序。因此,在还原时,备份脚本尝试为未修改的表创建序列,但失败。当然可以。
这是SCRIPT命令中的错误还是我缺少什么?
答案 0 :(得分:0)
我不认为这是SCRIPT
命令中的错误,正如它所说的那样。
从数据库中创建一个SQL脚本。
因此,当您第一次创建序列时,请确保它不存在以下序列的序列。
CREATE SEQUENCE IF NOT EXISTS
然后SCRIPT
命令在备份脚本时应该复制相同的内容。
答案 1 :(得分:0)
也有人在GitHub上问了这个问题: #2094。 这是我对其他读者提到的问题的一些评论的副本:
SCRIPT
不是备份命令,它是数据/元数据导出命令。但是,您可以将其用于备份目的。但是您需要一个新的空数据库才能将此类脚本加载到其中。
根据设计,它会从所有模式或仅从指定模式导出所有序列。
您可以使用SCRIPT
命令的DROP
子句。通过此子句,其他DROP TABLE
命令将包含在该脚本中。 DROP TABLE
命令还会删除自动创建的生成列序列。
您可以在DROP ALL OBJECTS
命令之前执行RUNSCRIPT
命令。
您可以关闭所有连接,删除数据库,创建一个新连接并在其中执行RUNSCRIPT
。