在我的 java 应用程序中,我使用 SCRIPT 命令备份某些表。当我尝试将此生成的备份脚本恢复到现有数据库时,出现错误Sequence "SYSTEM_SEQUENCE_6DBC2231_8C34_46B3_9CB9_2BC9E42CECA2" already exists似乎“SCRIPT”命令正在为数据库中的每个系统序列生成“CREATE SEQUENCE”行。不仅针对选择备份的表的序列,而且针对所有表的所有序列。因此,在恢复时,备份脚本尝试为未受影响的表创建序列,但失败了。当然。这是 SCRIPT 命令中的错误还是我遗漏了什么?
2 回答

江户川乱折腾
TA贡献1851条经验 获得超5个赞
SCRIPT
不是备份命令,而是数据/元数据导出命令。不过,您可以将其用于备份目的。但是您需要一个新的空数据库来将此类脚本加载到其中。
它按设计从所有模式或仅从指定模式导出所有序列。
您可以使用命令
DROP
的子句SCRIPT
。通过此子句,附加DROP TABLE
命令将包含在此类脚本中。DROP TABLE
命令还会删除自动创建的生成列序列。DROP ALL OBJECTS
您可以在该命令之前执行该命令RUNSCRIPT
。您可以关闭所有连接,删除数据库,创建一个新数据库并
RUNSCRIPT
在其中执行。

呼如林
TA贡献1798条经验 获得超3个赞
我不认为这是SCRIPT
命令错误,正如它所说......
从数据库创建 SQL 脚本。
因此,当您第一次创建序列时,请确保如果存在如下所示的序列,则不会创建序列。
CREATE SEQUENCE IF NOT EXISTS
然后SCRIPT
命令应该在备份脚本时复制相同的内容。
添加回答
举报
0/150
提交
取消