我正在尝试使用 H2 恢复脚本(H2 v.1.4.199,以及 .197 和 .200)恢复似乎已损坏的 H2 数据库,如下所示:
java -cp h2-1.4.200.jar org.h2.tools.RunScript -url "jdbc:h2:file:./testdb_recovered" -user test -password test -script testdb.h2.sql -showResults
出现以下错误:
CREATE CACHED TABLE PUBLIC.VECTORS_DATA(
ID BIGINT DEFAULT (NEXT VALUE FOR PUBLIC.SYSTEM_SEQUENCE_08DF5748_291A_46FD_9B83_818A3975DAF2) NOT NULL NULL_TO_DEFAULT SEQUENCE PUBLIC.SYSTEM_SEQUENCE_08DF5748_291A_46FD_9B83_818A3975DAF2 SELECTIVITY 100,
NAME VARCHAR(256) NOT NULL SELECTIVITY 1,
WIDTH INT SELECTIVITY 1,
HEIGHT INT SELECTIVITY 1,
DATA_SIZE INT SELECTIVITY 4
);Exception in thread "main" org.h2.jdbc.JdbcSQLSyntaxErrorException: Sequence "SYSTEM_SEQUENCE_08DF5748_291A_46FD_9B83_818A3975DAF2" not found; SQL statement:
CREATE CACHED TABLE PUBLIC.VECTORS_DATA(
ID BIGINT DEFAULT (NEXT VALUE FOR PUBLIC.SYSTEM_SEQUENCE_08DF5748_291A_46FD_9B83_818A3975DAF2) NOT NULL NULL_TO_DEFAULT SEQUENCE PUBLIC.SYSTEM_SEQUENCE_08DF5748_291A_46FD_9B83_818A3975DAF2 SELECTIVITY 100,
NAME VARCHAR(256) NOT NULL SELECTIVITY 1,
WIDTH INT SELECTIVITY 1,
HEIGHT INT SELECTIVITY 1,
DATA_SIZE INT SELECTIVITY 4
) [90036-199]
“VECTORS_DATA”表对应于 Spring 项目中使用的 Java 实体:
@Entity
@Table(name = "vectors_data")
public class VectorData {
/**
* Database id.
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/**
* Vector's data byte array.
*/
@javax.persistence.Transient
private byte[] data;
/**
* Vector's data byte array size. Used for persistency.
*/
@Column(name = "dataSize")
private int dataSize;
/**
* Vector's width in internal units.
*/
@Column(name = "width")
private int widthInternalUnit;
/**
* Vector's height in internal units.
*/
@Column(name = "height")
private int heightInternalUnit;
/**
* Vector's name.
*/
@Column(name = "name")
private String name;
H2 代码状态表明正在尝试访问一个不存在的序列。我不确定如何继续,尽管我尝试使用多个版本来恢复它,但没有帮助。有没有办法更有效地调试恢复过程?因为我认为实体本身没有问题。谢谢!