Comment démarrer la base de données H2 en mode serveur. J'ai besoin de le démarrer depuis mon application. J'ai essayé le code suivant:
server = Server.createTcpServer().start();
Voici les propriétés pour la connexion:
javabase.jdbc.url = jdbc:h2:tcp://localhost:9092/nio:~/source/db/database/db;AUTO_SERVER=TRUE
javabase.jdbc.driver = org.h2.Driver
javabase.jdbc.username = sa
javabase.jdbc.password =
Lorsque j'ai lancé le programme, j'ai eu l'erreur suivante:
client.db.exception.DAOException: org.h2.jdbc.JdbcSQLException: Database may be already in use: "Locked by another process". Possible solutions: close all other connection(s); use the server mode [90020-164]
at org.h2.message.DbException.getJdbcSQLException(DbException.Java:329)
at org.h2.message.DbException.get(DbException.Java:169)
at org.h2.message.DbException.get(DbException.Java:146)
at org.h2.store.FileLock.getExceptionAlreadyInUse(FileLock.Java:439)
at org.h2.store.FileLock.lockFile(FileLock.Java:336)
at org.h2.store.FileLock.lock(FileLock.Java:128)
at org.h2.engine.Database.open(Database.Java:542)
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.server.TcpServerThread.run(TcpServerThread.Java:133)
at Java.lang.Thread.run(Thread.Java:680)
Merci,
Comme le message d'exception l'indique, "La base de données est peut-être déjà utilisée". Vous devez fermer toutes les autres connexions pour vous assurer que la base de données n'est pas ouverte simultanément dans un autre processus.
En passant, n'utilisez pas AUTO_SERVER = TRUE et le mode serveur en même temps. Voir la documentation pour le mode mixte automatique . Utilisez l'un ou l'autre.
Je suppose que vous êtes un peu confus au sujet des différents modes de connexion. Je suggère de lire la documentation sur les modes de connexion , pour vous assurer de bien la comprendre.
En ligne de commande,
Java -jar h2-1.3.160.jar -webAllowOthers -tcpAllowOthers
cela lancera une base de données h2 en mode serveur:
Serveur Web Console s'exécutant à http: //A.B.C.D: 8082 (les autres peuvent se connecter) Impossible de démarrer un navigateur pour ouvrir l’URL http: //A.B.C.D: 8082 : Browser La détection a échoué et la propriété système h2.browser n'a pas défini le serveur TCP exécutant à l'adresse tcp: //A.B.C.D: 9092 (d'autres personnes peuvent se connecter). Serveur PG exécuté à pg: //A.B.C.D: 5435 (connexions locales uniquement)
ouvrir un navigateur pour avoir une interface graphique d'administration
Vous pouvez utiliser le code suivant pour exécuter H2 en mode serveur.
<bean id="dataSource" class="org.Apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="org.h2.Driver" />
<property name="url" value="jdbc:h2:target/h2/ps;AUTO_SERVER=TRUE" />
<property name="username" value="sa" />
<property name="password" value="" />
</bean>
Vous pouvez utiliser le client SQL SQuirrel ( http://squirrel-sql.sourceforge.net/ ) pour vous connecter à votre base de données H2 et consulter les tables.
Fermez toutes les applications utilisant H2 (console Web, etc.) Ajoutez ensuite AUTO_SERVER = TRUE à la fin de l'emplacement dans la console h2 et dans le programme Java (ce que vous avez déjà fait).
J'avais cette erreur en essayant de démarrer H2.
.__ Voir aussi http://h2database.com/javadoc/org/h2/tools/Server.html
Exception dans le fil "principal" org.h2.jdbc.JdbcSQLException: Feature not pris en charge: "- ~ webAllowOthers" [50100-197]
J'ai donc suivi ces étapes:
Java -cp bin/h2-1.4.197.jar org.h2.tools.Server -web -webAllowOthers -tcp -tcpAllowOthers -baseDir /home/manoj/dev/h2/h2db_6.0
Nohup Java -cp bin/h2-1.4.197.jar org.h2.tools.Server -web -webAllowOthers -tcp -tcpAllowOthers -baseDir /home/manoj/dev/h2/h2db_6.0/ &