我有这个用Java编写的俄罗斯方块游戏,它使用数据库来记录高分。只要我使用远程MySQL数据库,它就可以工作了,但是现在我正在尝试使用XAMPP MySQL设置localhost数据库,它在命令中继续像“SQLException:Communications link failure”:
con = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/score", user, psw);
我猜这是错误的URL或数据库配置,但我真的不知道要检查什么。有什么想法吗?
编辑:我的朋友通过将URL中的“localhost”替换为“127.0.0.1”来解决我的问题(这是非常令人尴尬的,因为你可以想象:P)。所以问题是:为什么XAMPP无法将“localhost”转换为IP地址以及如何修复它?
答案 0 :(得分:7)
为什么XAMPP无法将“localhost”转换为IP地址以及如何修复它?
这不是XAMPP问题,也不是编程问题。这更像是一个DNS问题。
首先,您是否有%SystemRoot%/system32/drivers/etc/hosts
个文件,其中以下行为第一个行? (因此,在所有评论之后,但在任何其他主持人声明之前)
127.0.0.1 localhost
更新:根据我Googled的评论,看起来MySQL JDBC驱动程序根本不吃IPv6个地址。换句话说,您需要将::1
更改为127.0.0.1
。但我也发现this topic提到您可以使用以下JVM参数来解决此问题:
java -Djava.net.preferIPv4Stack=true
答案 1 :(得分:2)
我尝试了成功的连接。首先在 phpmyadmin 中创建一个数据库 - 例如。 'MYDB' 然后在代码中将connection.url与此值放在一起
'jdbc:mysql://localhost:3306/mydb'
如果您不首先创建数据库,则不会连接
答案 2 :(得分:1)
在MySql中,您必须允许显式地从localhost访问您的用户。以下是一个示例(摘自here):
mysql> grant usage on *.* to amarokuser@localhost identified by 'amarokpasswd';
mysql> grant all privileges on amarokdb.* to amarokuser@localhost ;