H2 mixed mode connection problem

I start the h2 database in a servlet context listener:

public void contextInitialized(ServletContextEvent sce) { org.h2.Driver.load(); String apprealPath = sce.getServletContext().getRealPath("\\"); String h2Url = "jdbc:h2:file:" + apprealPath + "DB\\cdb;AUTO_SERVER=true"; LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); StatusPrinter.print(lc); logger.debug("h2 url : " + h2Url); try { conn = DriverManager.getConnection(h2Url, "sa", "sa"); } catch (SQLException e) { e.printStackTrace(); } logger.debug("h2 database started in embedded mode"); sce.getServletContext().setAttribute("connection", conn); } 

then I'm trying to use dbvisualizer to connect to h2 using the following url:

 jdbc:h2:tcp://localhost/~/cdb 

but get the following error messages:

 An error occurred while establishing the connection: Type: org.h2.jdbc.JdbcSQLException Error Code: 90067 SQL State: 90067 Message: Connection is broken: "Connection refused: connect" [90067-148] 

I tried replacing localhost with "172.17.33.181DUC8524" (I found it in cdb.lock.db) to reconnect with user "sa" password "sa", then the server response changed to: invalid username or password!

+4
source share
1 answer

In Automatic Mixed Mode, you do not need (and you cannot) use jdbc:h2:tcp://localhost . Just use the same URL everywhere, which means jdbc:h2:file:...DB\\cdb;AUTO_SERVER=true .

You can use the same database URL, whether the database is open or not. Explicit client / server connections (using jdbc: h2: tcp: // or ssl: //) are not supported.

+12
source

Source: https://habr.com/ru/post/1333278/


All Articles