2017-09-18 16 views
0

Google App Engineアプリケーションを開発しています。本番環境ではGoogle Cloud SQLの使用を計画していますが、開発段階ではh2データベースを使用したいと考えていました。これは、サーバー対応の1(jdbc:h2:~/folder/dev;AUTO_SERVER=TRUE)と、それが次のエラーで失敗し、メモリ内および埋め込まデシベル(jdbc:h2:mem/dev/jdbc:h2:~/folder/dev)を使用した場合正常に動作しなく:Google App Engineでのローカル開発にh2データベースを使用する

org.h2.jdbc.JdbcSQLException: IO Exception: "java.net.SocketException: Permission denied: Not allowed to issue a socket bind: permission denied."; "port: 0 ssl: false" [90031-168] 
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) 
at org.h2.message.DbException.get(DbException.java:158) 
at org.h2.message.DbException.convertIOException(DbException.java:315) 
at org.h2.util.NetUtils.createServerSocketTry(NetUtils.java:193) 
at org.h2.util.NetUtils.createServerSocket(NetUtils.java:156) 
at org.h2.server.TcpServer.start(TcpServer.java:222) 
at org.h2.tools.Server.start(Server.java:455) 
at org.h2.engine.Database.startServer(Database.java:672) 
at org.h2.engine.Database.open(Database.java:544) 
at org.h2.engine.Database.openDatabase(Database.java:222) 
at org.h2.engine.Database.<init>(Database.java:217) 
at org.h2.engine.Engine.openSession(Engine.java:56) 
at org.h2.engine.Engine.openSession(Engine.java:159) 
at org.h2.engine.Engine.createSessionAndValidate(Engine.java:138) 
at org.h2.engine.Engine.createSession(Engine.java:121) 
at org.h2.engine.Engine.createSession(Engine.java:28) 
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:305) 
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:108) 
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:92) 
at org.h2.Driver.connect(Driver.java:72) 
at java.sql.DriverManager.getConnection(DriverManager.java:664) 
at java.sql.DriverManager.getConnection(DriverManager.java:247) 

私は理解しているように、これはGAEのですアプリケーションの実行中にデータベースに簡単にアクセスできなくなります。ローカルサーバーモードでのみこの問題を回避する方法はありますか?私はdevのモードでMySql dbを使用する代わりに、好奇心が強いです。

答えて

1

現在、GAEでもH2を試しています。 memと書き込み可能なディスクのため、標準的な環境は私には間に合わない:1GbとF4-1Gインスタンスの合計最大。 h2組み込みモードが動作する場合、標準としてasを使用する必要があります。標準では書き込み操作に/ tmpのみが許可されます。 GAEはリスニングソケットを許可していないため、残念なことに環境のタイプに関係なく自動サーバーはありません(https://cloud.google.com/appengine/docs/standard/java/sockets/

関連する問題