2012-02-16 13 views
20

सर्वर मोड में H2 डेटाबेस कैसे प्रारंभ करें। मैं अपने application.I से शुरू करने की आवश्यकता की कोशिश की निम्नलिखित कोड:सर्वर मोड में H2 डेटाबेस कैसे चलाएं?

server = Server.createTcpServer().start(); 

यहां कनेक्शन के लिए गुण है:

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 = 

जब मैं कार्यक्रम मैं निम्नलिखित त्रुटि मिली चलाएँ:

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) 

धन्यवाद,

+3

http://www.h2database.com/html/tutorial.html#using_server –

+1

यह मेरे लिए काम नहीं करता है –

+1

ठीक है ... मेरा मतलब है - कृपया अधिक विशिष्ट हो । यह क्यों काम नहीं करता है? आपकी क्या प्राप्त करने की इच्छा है? अब तक तुमने क्या प्रयास किये हैं? –

उत्तर

24

अपवाद संदेश कहते हैं, "डाटाबेस पहले से प्रयोग में हो सकता है" । यह सुनिश्चित करने के लिए कि डेटाबेस एक साथ दूसरी प्रक्रिया में खुला नहीं है, आपको अन्य सभी कनेक्शन बंद करने की आवश्यकता है।

वैसे, एक ही समय में सर्वर मोड AUTO_SERVER = TRUE और का उपयोग न करें। automatic mixed mode के लिए प्रलेखन देखें। एक का प्रयोग करें।

मुझे लगता है कि आप विभिन्न कनेक्शन मोड के बारे में थोड़ा उलझन में हैं। मैं यह सुनिश्चित करने के लिए कि आप इसे समझते हैं, the documentation about the connection modes पढ़ने का सुझाव देते हैं।

+1

अपवाद संदेश इंप्रेशन देता है कि 'एम्बेडेड मोड' में डेटाबेस चलाने से केवल 1 कनेक्शन की अनुमति मिलती है, जबकि इसे 'सर्वर मोड' में डालने पर कई कनेक्शन की अनुमति मिलती है। क्या यह मामला नहीं है? – bvdb

+0

नहीं, यह मामला नहीं है। दस्तावेज देखें। –

+2

@ थॉमस - मैंने कई पदों को स्कैन किया है, और मैं आपको दस्तावेज़ों को देखने के लिए कहता रहता हूं। कृपया ऐसा मत करो। प्रलेखन, विशेष रूप से startTcpServer के आसपास, सबसे अच्छा है। सर्वर शुरू होता है, और इसे दूरस्थ रूप से बंद कर दिया जा सकता है, लेकिन यह सभी कनेक्शन से इनकार करता है। – Steve11235

11

आप सर्वर मोड में H2 चलाने के लिए निम्न कोड का उपयोग कर सकते हैं।

<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> 

आप आप के लिए एच 2 डेटाबेस से कनेक्ट करने और तालिकाओं को देखने के लिए गिलहरी एसक्यूएल ग्राहक (http://squirrel-sql.sourceforge.net/) का उपयोग कर सकते हैं।

  1. नया कनेक्शन बनाएं।
  2. अपनी परियोजना लक्ष्य फ़ोल्डर h2 फ़ोल्डर में चालक लटकती मेनू
  3. सेट यूआरएल में एच 2 का चयन करें (JDBC: h2: C: \ परियोजनाओं \ कार्यक्षेत्र \ TestProject \ लक्ष्य/h2/ps; AUTO_SERVER = true)
  4. दर्ज उपयोगकर्ता नाम ("सा")
  5. पासवर्ड दर्ज करें ("")
+0

org.h2.jdbc.JdbcSQLException: डेटाबेस फ़ाइल "jdbc: h2: target/h2/ps; AUTO_SERVER = TRUE" में वर्तमान कार्य निर्देशिका से संबंधित एक फ़ाइल पथ की अनुमति नहीं है। इसके बजाय एक पूर्ण पथ, ~/नाम, ./name, या baseDir सेटिंग का उपयोग करें। [90011-196] –

15

कमांड लाइन से,

java -jar h2-1.3.160.jar -webAllowOthers -tcpAllowOthers 

इस सर्वर मोड में एक h2 डेटाबेस का शुभारंभ करेंगे:

Web Console server running at http://A.B.C.D:8082 (others can connect) Failed to start a browser to open the URL http://A.B.C.D:8082 : Browser detection failed and system property h2.browser not set TCP server running at tcp://A.B.C.D:9092 (others can connect) PG server running at pg://A.B.C.D:5435 (only local connections)

एक ब्राउज़र को खोलने के लिए एक व्यवस्थापक जीयूआई

+0

इस दृष्टिकोण का उपयोग करते समय, आप अधिकतम कनेक्शन की अधिकतम संख्या कैसे बढ़ाते हैं? –

+0

यह मेरे लिए काम किया। विशेष रूप से डिफ़ॉल्ट टीसीपी पोर्ट पर ध्यान रखें: 90 9 2 (टीसीपीपोर्ट का उपयोग करके समायोजित किया जा सकता है)! – Lars

2

बंद उन सभी एप्लिकेशन को एच 2 (वेब ​​कंसोल, आदि) का उपयोग कर फिर h2 कंसोल में स्थान के अंत तक AUTO_SERVER = सही जोड़ सकते हैं और यह भी करने के लिए जावा प्रोग्राम (जो आपने पहले ही किया है)

+0

धन्यवाद, महान काम करता है। –

संबंधित मुद्दे