I have this Tetris game written in Java, which uses DB to record high scores. It worked ok as long as I was using remote MySQL DB, but now I'm trying to set up localhost DB using XAMPP MySQL and it keeps going like "SQLException: Communications link failure" at command:
con = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/score", user, psw);
I guess it's either wrong URL or DB configuration, but I really don't know what to check. Any ideas?
EDIT: My friend has fixed my problem by replacing "localhost" in URL by "127.0.0.1" (which was quite embarrassing as you can surely imagine :P ).
So question is: Why is XAMPP not able to translate "localhost" into IP address and how to fix it?
Connection URL: The connection URL for the mysql database is jdbc:mysql://localhost:3306/sonoo where jdbc is the API, mysql is the database, localhost is the server name on which mysql is running, we may also use IP address, 3306 is the port number and sonoo is the database name.
In Java, we can connect to our database(MySQL) with JDBC(Java Database Connectivity) through the Java code. JDBC is one of the standard APIs for database connectivity, using it we can easily run our query, statement, and also fetch data from the database.
Driver in MySQL Connector/J is com. mysql. cj. jdbc.
MySQL JDBC driver To connect to MySQL from Java, you have to use the JDBC driver from MySQL. The MySQL JDBC driver is called MySQL Connector/J. You find the latest MySQL JDBC driver under the following URL: http://dev.mysql.com/downloads/connector/j.
Why is XAMPP not able to translate "localhost" into IP address and how to fix it?
This is not a XAMPP problem nor a programming problem. This is more a DNS problem.
To start, do you have a %SystemRoot%/system32/drivers/etc/hosts
file with the following line as first line? (thus, after all comments, but before any other host declarations)
127.0.0.1 localhost
Update: as per the comments I've Googled a bit and it look like that the MySQL JDBC driver doesn't eat IPv6 addresses at all. In other words, you'll need to change ::1
to 127.0.0.1
. But I also found this topic which mentions that you can use the following JVM argument to fix this problem:
java -Djava.net.preferIPv4Stack=true
I tried and got a successful connection. First create a database in phpmyadmin - eg. 'mydb' and then in code put connection.url with this value
'jdbc:mysql://localhost:3306/mydb'
If you don't create a database first it wont connect
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With