次のように、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 コードのステータスは、存在しないシーケンスにアクセスしようとしていることを示しています。複数のバージョンを使用して回復しようとしましたが、どうすればよいかわかりません。回復プロセスをより効率的にデバッグする方法はありますか? エンティティ自体に問題はないと思うからです。ありがとう!