問題タブ [h2]
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.
java - h2 (埋め込みモード) データベース ファイルの問題
src ディレクトリ (Java、Eclipse) に h2-database ファイルがあります: h2test.db
問題:
コマンド ラインから h2.jar を起動し (ポート 8082 で h2 ブラウザ インターフェイスを起動)、h2test.db に 'test1' と 'test2' の 2 つのテーブルを作成し、それらにいくつかのデータを入れました。
Java コード (JDBC) からそれらにアクセスしようとすると、「テーブルが見つからない例外」がスローされます。Java コードからの「テーブルの表示」は、0 行の結果セットを示します。
また、Java コード (CREATE TABLE ... など) から新しいテーブル ('newtest') を作成する場合、後で h2.jar ブラウザー インターフェイスを起動すると、それが表示されません。他の 2 つのテーブル (「test1」と「test2」) だけが表示されます (ただし、新しく作成されたテーブル「newtest」には Java コードからアクセスできます)。
私は組み込みデータベースの経験がありません。ここで根本的に間違ったことをしていると思います。私の仮定は、同じファイルにアクセスしているということです.1回はJavaアプリから、もう1回はh2コンソールブラウザインターフェースからです。私はそれを理解できないようです、ここで何が間違っていますか?
編集: 要求に応じて、いくつかのコードを追加します:
Java コード:
この結果セットには、2 つのテーブルが表示されるのではなく、0 行 (テーブルなし) があります。
H2 コンソール - ブラウザー インターフェースの設定:
EDIT2: データベースを新しいフォルダーにコピーしました。新しいフォルダの db ファイルは、'newtest' テーブル (Java コードから) と 'test1' および 'test2' テーブル (コンソール ブラウザ h2 インターフェイスから) で表示されます - 古い db とまったく同じ方法ファイルが表示されました。そのため、問題は db ファイルのコピーで解決しません。
sql - 「存在しない場合はテーブルを作成する」-スキーマも確認する方法は?
mytable
指定されたテーブルが存在するかどうかだけでなく、そのスキーマが本来あるべきものと似ているかどうかもチェックする (多かれ少なかれ) 標準的な方法はありますか? 私はH2 データベースを試しています。
ステートメントは明らかにテーブルの名前のみをチェックします。指定された名前のテーブルがあり、スキーマが異なる場合、例外が発生すると予想されます。
java - リレーショナル データベース配列 (H2、Java)
配列の実装方法には 2 つのオプションがあるようですが、どちらを使用すればよいかを知りたいです。
ARRAY データ型を使用し、(私が理解していることから) データ オブジェクトをデータベースに効果的にシリアル化します (私の場合はラップされたプリミティブ型です。これを機能させる別の方法はわかりません)。
個別のテーブルを使用し、配列項目ごとに外部キーをマップします。
これ(特にH2)の経験がある場合、どれをお勧めしますか?
sql - SQLスクリプトを介してBLOBを挿入しますか?
私は H2 データベース ( http://www.h2database.com ) を持っており、単純な単純な SQL スクリプトを使用して BLOB フィールドにファイルを挿入したいと考えています (たとえば、テスト データベースにデータを入力するため)。コードを介してそれを行う方法は知っていますが、SQLスクリプト自体を行う方法が見つかりません。
私はパスを通過しようとしました、すなわち
しかし、これは失敗します。
コード (Java など) 内で、File オブジェクトを作成して渡すのは簡単ですが、SQL スクリプトから直接、行き詰まっています ...
何か案が?
java - SQL (Java、h2): データベースに挿入したばかりの単一アイテムの一意の ID を取得する最良の方法は何ですか?
私の現在の方法はこれです:
これは、最後に挿入されたアイテムが常に最大の一意の ID (主キー、自動インクリメント) を持っていることを前提としています。ここで何かがおかしい。
代替案?
java - H2DBを介して作成された「インメモリ」データベースにストリームを取得するにはどうすればよいですか?
私はそのようなメカニズムを作成する必要があります:
- インメモリ(H2DB)データベースを作成します。
- テーブルを作成し、いくつかのデータを使用してそれらを埋めます。
- そのデータベースへのストリームを取得します。
- そのストリームをWebDAVまたはその他の方法で送信します。
「H2DBを介して作成された「インメモリ」データベースにストリームを取得する方法」以外はすべて知っていますか?
そしていくつかの説明:
- サーバーの制限により、ファイルを作成できません。
- ファイルを作成するには、そのストリームが必要です。
java - H2 と HSQLDB のどちらが優れていますか?
HSQLDB 2.0 がまもなくリリースされます。私の知る限り、ほとんどのユーザーは HSQLDB よりも H2 を好むため、H2 よりも優れているかどうか疑問に思います。HSQLDB 2.0 の MVCC サポートに興味があります。H2 の MVCC はまだ実験段階であることを知りました。サポート/ドキュメント、並行性、パフォーマンスに関して、どちらが優れていますか?
database - [H2 と Firebird]auto_increment、アイデンティティまたはトリガーとジェネレーター?
Firebird で自動インクリメント列を持つ唯一の方法は、ジェネレーターをセットアップし、それをトリガーで使用することです。
H2 db には、それを行うための auto_increment および identity キーワードがあります。
最善の方法は何ですか?
Mysql も auto_increment を使用しますが、ccurrence の読み取りとテーブルのロックに問題がありますね。
ありがとうございました。
database - H2データベースを管理するためのフロントエンドツール
H2データベースの統合管理フロントエンドを使用するにはどうすればよいですか?
テーブルの作成、テーブルの変更、列の追加などの操作の場合。
database - h2 インメモリ テーブル、リモート接続
H2データベースを使用してメモリ内テーブルを作成し、それが作成されて実行されているJVMの外部でアクセスすることに問題があります。
ドキュメントはURLを次のように構造化しますjdbc:h2:tcp://<host>/mem:<databasename>
多くの組み合わせを試しましたが、リモート接続を機能させることができません。この機能は機能していますか? 誰かがこれをどのように使用したかの詳細を教えてもらえますか?