Home  >  Article  >  Java  >  How to Prevent \"Table Not Found\" Error in H2 In-Memory Databases?

How to Prevent \"Table Not Found\" Error in H2 In-Memory Databases?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-26 17:11:02856browse

How to Prevent

H2 In-Memory Database: Resolving "Table Not Found" Error When Using "jdbc:h2:mem:

In H2, the error message "Table 'TABLE_NAME' not found" when attempting to connect to an in-memory database usually indicates a configuration issue. The database is discarding the table because it's closed after its creation.

To resolve this issue, you need to add the following parameter to your JDBC connection URL:

;DB_CLOSE_DELAY=-1

For example, your modified connection URL would look like this:

jdbc:h2:mem:test;DB_CLOSE_DELAY=-1

Explanation:

When you connect to an in-memory database in H2 using the default configuration (e.g., jdbc:h2:mem:test), the database content is lost when the last connection is closed. To prevent this, you need to set DB_CLOSE_DELAY=-1, which ensures that the database remains open as long as the Java Virtual Machine (JVM) is running. This allows you to maintain the contents of your in-memory database until you explicitly close it or terminate the JVM.

This configuration change is documented in the H2 Features page under the "In-Memory Databases" section:

By default, closing the last connection to a database closes the database. For an in-memory database, this means the content is lost. To keep the database open, add ;DB_CLOSE_DELAY=-1 to the database URL. To keep the content of an in-memory database as long as the virtual machine is alive, use jdbc:h2:mem:test;DB_CLOSE_DELAY=-1.

By following this solution, you can successfully connect to your in-memory database and work with tables without encountering the "Table Not Found" error.

The above is the detailed content of How to Prevent \"Table Not Found\" Error in H2 In-Memory Databases?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn