skip
skip

Reputation: 12653

Cannot connect to hsqldb database

I am using the following command to create a database using windows command and connect to it but I am getting java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind error.

Command used to create a database named xdb and connect to it:

java -cp ./lib/hsqldb.jar org.hsqldb.Server -database.0 file:mydb -dbname.0 xdb

Complete error:

[Server@83cc67]: [Thread[main,5,main]]: checkRunning(false) entered
[Server@83cc67]: [Thread[main,5,main]]: checkRunning(false) exited
[Server@83cc67]: Startup sequence initiated from main() method
[Server@83cc67]: Loaded properties from [C:\Home\hsqldb\server.properties]
[Server@83cc67]: Initiating startup sequence...
[Server@83cc67]: [Thread[HSQLDB Server @83cc67,5,main]]: run()/openServerSocket(
):
java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:365)
        at java.net.ServerSocket.bind(ServerSocket.java:319)
        at java.net.ServerSocket.<init>(ServerSocket.java:185)
        at java.net.ServerSocket.<init>(ServerSocket.java:97)
        at org.hsqldb.HsqlSocketFactory.createServerSocket(Unknown Source)
        at org.hsqldb.Server.openServerSocket(Unknown Source)
        at org.hsqldb.Server.run(Unknown Source)
        at org.hsqldb.Server.access$000(Unknown Source)
        at org.hsqldb.Server$ServerThread.run(Unknown Source)
[Server@83cc67]: Initiating shutdown sequence...
[Server@83cc67]: Shutdown sequence completed in 6 ms.
[Server@83cc67]: 2012-05-18 01:31:59.184 SHUTDOWN : System.exit() is called next

Could someone help me understand why am I getting this error and how to solve it?

Thanks

Upvotes: 2

Views: 5348

Answers (2)

Rob Kielty
Rob Kielty

Reputation: 8152

The default port for hsqldb is 9001

Run netstat -an check to see if there is something is LISTENING on port 9001

netstat -an | grep LISTENING to check for all servers listening for incoming connections

netstat -an | grep 9001 to check for a specific port number.

If there is something already there then the new of hsqldb that you are trying to start will fail to bind a socket to the 9001 port.

On Windows 7 you can run TCPView to see what process is currently listening on the "overcrowded" port. Then it's a matter of deciding to terminate that process which is using 9001 or reconfiguring hsqldb and your client application to use a different (unused) port.

It is possible to change the port that hsqldb listens on using the --port XXXX, where XXXX is the new port number.

Also from the java -cp ./lib/hsqldb.jar org.hsqldb.Server --help output...

The server looks for a 'server.properties' file in the current directory and loads properties from it if it exists. Command line options override those loaded from the 'server.properties' file.

There are other possible causes of this error so it would be useful to know what operating system the hsqldb is running on.

Failure to bind to a socket is a problem that can afflict any server application so you can review the answers provided for other server software that return this error such as the question asked about JBOSS here ...

java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind (JBOSS)

Upvotes: 4

richarbernal
richarbernal

Reputation: 1059

It looks like you try to bind to port 0 and it doesn't exist. Try to config a different port

Upvotes: 0

Related Questions