0

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

4

1 に答える 1