Home >Java >javaTutorial >How to Prevent \'Table Not Found\' Error in H2 In-Memory Databases?
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!