問題タブ [h2db]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - 単一プロジェクト用の Liquibase DB 固有のスクリプト
postgresql をメイン DB、H2 をテスト用のメモリ内 DB とするスプリング ブート プロジェクトがあります。カスタム ロジックを実行する PL/pgSQL プロシージャを追加しましたが、テストが機能しなくなりました。liquibase ユーザーは通常、そのようなケースをどのように解決しますか?
私の手順は次のとおりです。
java - jdbc ロック例外の処理
さまざまなデータベース テクノロジ、最近の MS-SQL と H2、およびさまざまなアプリケーションでも、テーブル ロックを取得できなかったステートメントから例外が発生します。
これは特に、多数の並列スレッドから同じテーブルにアクセスする場合に発生します。これらの競合は、十分に複雑なステートメントと十分な並列スレッドで原則的に回避できないと仮定すると、これらの失敗したステートメントを処理するための良い方法は何ですか?
- MS-SQL 例外は、ステートメントを再試行することを明示的に提案します。
- H2 では LOCK_TIMEOUT を設定できます。
この方法ではすべてのステートメントが失敗する可能性があるため、ソフトウェア内のすべてのステートメントに対して再試行が必要になります。追加する必要がある定型コードがたくさんあるようです。
対照的に、タイムアウトは単純な構成ですが、さらにいくつかのスレッドが再び例外をトリガーしないことを保証するには、タイムアウトを過度に高くする必要があります。これにより、再試行ロジックに戻ります。
従来のコードには数 10 個のステートメントが含まれており、それぞれが独自のメソッドで実装され、接続/ステートメント/結果セットのトリプレットを開いたり閉じたりします。それぞれを再試行ループにラップする以外に、リファクタリングする良い方法は何でしょうか? パフォーマンスが低下しても問題ありませんが、失敗したステートメントはありません。
hibernate - hibernate 階層: 識別子列に NULL は許可されていません
休止状態戦略に基づくエンティティ階層があり、application.ymlSINGLE_TABLE
に設定しました。ddl-auto=update
h2db を使用してテストを実行すると、「列に NULL は許可されていません」というメッセージが表示されます。
これは私のマッピングです:
nullを discriminatorValue として 1 つのサブクラスに設定する必要があります。
ddl-auto=update
ディレクティブが形状テーブルを作成すると、識別子の列に設定されるためnot null
、「列に NULL は許可されていません」と表示されます。
ddl-auto を使用して識別子列を強制的に null 可能にする方法はありますか?
mysql - H2 / Derby / HSQLのMySQL関数「HEX」
インメモリ データベースを使用して SQL クエリを単体テストしようとしています。クエリは、MySQL 組み込み関数の 'hex' と 'unhex' を使用します (DB にバイナリ データを書き込むため)。これら 3 つの in-momery DB ソリューションのいずれも「hex」機能をサポートしていないことが判明したため、それらをテストすることはできません。
私の質問 - クエリで直接「hex」関数を使用する代わりに、16 進変換をコードに移動せずにクエリをテストする方法はありませんか?
ps。インメモリ DB が実際の db の動作を代表するものではないことはわかっていますが、クエリは非常に簡単です - 挿入と選択。