質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

1252閲覧

herokuでH2データベースが使えるかどうか。

Shumai715

総合スコア1

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/10/08 14:26

前提・実現したいこと

eclipse、ローカルサーバーのTomcat、Java(JSP/サーブレット)を使って、H2データベースを参照しテーブルの一覧をWebページに表示させるプログラムを作りました。

Tomcatで実行したときは上手く動くのですが、これをherokuを用いてデプロイすると、以下のエラーが発生しH2データベースに接続出来なくなりました。

発生している問題・エラーメッセージ

org.h2.jdbc.JdbcSQLNonTransientConnectionException: Connection is broken

該当のソースコード

Java

1package dao; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8import java.util.ArrayList; 9import java.util.List; 10 11import model.Mutter; 12 13public class MutterDAO { 14 //データベース接続に使用する情報 15 private final String JDBC_URL = "jdbc:h2:tcp://〇〇〇.〇〇.〇/~/docoTsubu"; //〇の部分にはIPアドレスが入っています 16 private final String DB_USER = "sa"; 17 private final String DB_PASS = ""; 18 19 public List<Mutter> findAll(){ 20 List<Mutter> mutterList = new ArrayList<>(); 21 22 //データベース接続 23 try(Connection conn = DriverManager.getConnection(JDBC_URL, DB_USER, DB_PASS)){ 24 //SELECT文の準備 25 String sql = 26 "SELECT ID,NAME,TEXT FROM MUTTER ORDER BY ID DESC"; 27 PreparedStatement pStmt = conn.prepareStatement(sql); 28 29 //SELECTを実行 30 ResultSet rs = pStmt.executeQuery(); 31 32 //SELECT文の結果をArrayListに格納 33 while (rs.next()) { 34 int id = rs.getInt("ID"); 35 String userName = rs.getString("NAME"); 36 String text = rs.getString("TEXT"); 37 Mutter mutter = new Mutter(id, userName, text); 38 mutterList.add(mutter); 39 } 40 }catch(SQLException e) { 41 e.printStackTrace(); 42 return null; 43 } 44 45 return mutterList; 46 } 47 48 public boolean create(Mutter mutter) { 49 //データベース接続 50 try(Connection conn = DriverManager.getConnection(JDBC_URL, DB_USER, DB_PASS)){ 51 //INSERT 文の準備 52 String sql = "INSERT INTO MUTTER(NAME, TEXT) VALUES(?, ?)"; 53 PreparedStatement pStmt = conn.prepareStatement(sql); 54 55 //INSERT文中の?に使用する値を設定し、SQLを完成 56 pStmt.setString(1, mutter.getUserName()); 57 pStmt.setString(2, mutter.getText()); 58 59 //INSERT文を実行(1行のみ追加。追加されたのが1行じゃなかったらfalseを返す) 60 int result = pStmt.executeUpdate(); 61 if(result != 1) { 62 return false; 63 } 64 65 }catch(SQLException e) { 66 e.printStackTrace(); 67 return false; 68 } 69 return true; 70 } 71} 72

試したこと

・Class.forName("org.h2.Driver");
という文をデータベース接続前に置く。

・WebContent/WEB-INF/lib/にh2のJDBCドライバを設置。

補足情報

恥ずかしながらheroku側のデータベース設定は何も行っていません。
herokuがH2データベースに対応していないのか、それともheroku側で何か設定しなければならないのか。どちらが原因か分かりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「Heroku H2」で調べると、stackoverflowのほうに質問上がってますね
Heroku with H2 Database

To my knowledge there is no H2 support on the Heroku server. So you can't use H2 as an in memory database.

だそうです。

質問自体は2017年5月のものですが、
使えるAddonのリンクもあるので(回答の[here]より)最新状況は確認してみてください。

投稿2020/10/08 21:16

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問