簡単な答え:テーブルの主キーはBIGINTタイプである必要があります。
CREATE TABLE hydr(dt bigint primary key, value double, sensorid int);
この場合、テーブルは「dt」列を使用して編成されています。これは「クラスター化インデックス」と呼ばれます。データ型TIMESTAMPはサポートされていません。これは、主にナノ秒も含まれているためです。あなたができることは、UNIXタイムスタンプ(1970年からのミリ秒)をBIGINTとして保存することです。
長い答え:データがH2の内部にどのように保存されるかについての文書は不十分です。H2データベースの「パフォーマンス」ドキュメントに次のセクションを追加します。これで問題が解決することを願っています(そうでない場合は教えてください):
データが内部に保存される方法
永続データベースの場合、タイプBIGINT、INT、SMALLINT、TINYINTの単一列の主キーを使用してテーブルが作成されると、テーブルのデータはこのように編成されます。これは、「クラスター化インデックス」または「インデックス編成テーブル」と呼ばれることもあります。
H2は、テーブルデータとインデックスをbツリーの形式で内部的に格納します。各Bツリーは、エントリを一意のキー(1つ以上の列)とデータ(0つ以上の列)のリストとして格納します。テーブルデータは常に、long型の単一の列キーを持つ「データBツリー」の形式で編成されます。テーブルの作成時にタイプBIGINT、INT、SMALLINT、TINYINTの単一列の主キーが指定されている場合、この列はデータBツリーのキーとして使用されます。主キーが指定されていない場合、主キー列が別のデータ型である場合、または主キーに複数の列が含まれている場合、タイプBIGINTの非表示の自動インクリメント列がテーブルに追加されます。データbツリーのキー。テーブルの他のすべての列は、このデータBツリーのデータ領域内に格納されます(大きなBLOB、CLOB列、
追加のインデックスごとに、1つの新しい「インデックスbツリー」が作成されます。このBツリーのキーは、インデックス付きの列とデータのBツリーのキーで構成されます。データが挿入された後に主キーが作成された場合、主キーに複数の列が含まれている場合、または主キーが上記のデータ型でない場合、主キーは新しいインデックスBツリーに格納されます。