猿问

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

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

Sequence "SYSTEM_SEQUENCE_6DBC2231_8C34_46B3_9CB9_2BC9E42CECA2" already exists

似乎“SCRIPT”命令正在为数据库中的每个系统序列生成“CREATE SEQUENCE”行。不仅针对选择备份的表的序列,而且针对所有表的所有序列。因此,在恢复时,备份脚本尝试为未受影响的表创建序列,但失败了。当然。

这是 SCRIPT 命令中的错误还是我遗漏了什么?


噜噜哒
浏览 178回答 2
2回答

江户川乱折腾

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

呼如林

我不认为这是SCRIPT命令错误,正如它所说......从数据库创建 SQL 脚本。因此,当您第一次创建序列时,请确保如果存在如下所示的序列,则不会创建序列。CREATE SEQUENCE IF NOT EXISTS然后SCRIPT命令应该在备份脚本时复制相同的内容。
随时随地看视频慕课网APP

相关分类

Java
我要回答