2010-01-30 45 views
7

Tôi có trò chơi Tetris này được viết bằng Java, sử dụng DB để ghi lại điểm số cao. Nó làm việc ok miễn là tôi đã sử dụng từ xa MySQL DB, nhưng bây giờ tôi đang cố gắng để thiết lập localhost DB sử dụng XAMPP MySQL và nó tiếp tục đi như "SQLException: Truyền thông liên kết thất bại" tại lệnh:Làm thế nào để kết nối XAMPP MySQL cục bộ DB bằng cách sử dụng JDBC?

con = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/score", user, psw); 

tôi đoán đó là URL sai hoặc cấu hình DB, nhưng tôi thực sự không biết phải kiểm tra cái gì. Ý tưởng nào?

EDIT: Bạn tôi đã khắc phục sự cố của tôi bằng cách thay thế "localhost" trong URL theo "127.0.0.1" (điều này khá lúng túng như bạn có thể tưởng tượng: P).

Vì vậy, câu hỏi là: Tại sao XAMPP không thể dịch "localhost" thành địa chỉ IP và cách khắc phục?

+0

Bạn có thể duyệt đến cơ sở dữ liệu MySQL với Query Browser? Tôi nhớ đã gặp sự cố tương tự với ứng dụng Java từ chối nhận ra việc đặt tên trong chuỗi kết nối với MySQL. –

+0

Đừng quên bước quan trọng này trên liên kết này - http://ferdidolot.wordpress.com/2009/06/14/java-mysql-jdbc-tutorial-using-netbeans-part-1/ –

+0

[Bài đăng này] (http: //forums.netbeans.org/ntopic4896.html) tuyên bố đã sửa nó. Kiểm tra nó ra. – duffymo

Trả lời

7

Tại sao XAMPP không thể dịch "localhost" vào địa chỉ IP và làm thế nào để sửa chữa nó?

Đây không phải là vấn đề XAMPP cũng như vấn đề lập trình. Đây là một vấn đề về DNS.

Để bắt đầu, bạn có tệp %SystemRoot%/system32/drivers/etc/hosts có dòng sau là dòng đầu tiên không? (Như vậy, sau khi tất cả các ý kiến, nhưng trước bất kỳ khai báo máy chủ khác)

127.0.0.1 localhost 

Cập nhật: theo ý kiến ​​tôi đã Googled một chút và nó trông giống như rằng trình điều khiển MySQL JDBC không ăn IPv6 địa chỉ ở tất cả. Nói cách khác, bạn cần thay đổi ::1 thành 127.0.0.1. Nhưng tôi cũng tìm thấy this topic đề cập rằng bạn có thể sử dụng đối số JVM sau để khắc phục sự cố này:

java -Djava.net.preferIPv4Stack=true 
+0

Còn về ":: 1 localhost" thì sao? Điều đó nên làm như vậy, phải không? –

+0

Điều đó có ý nghĩa, cảm ơn bạn đã nghiên cứu;) –

1

Trong MySql, bạn phải cho phép truy cập cho người dùng của mình từ localhost một cách rõ ràng. Dưới đây là một ví dụ (lấy từ here):

mysql> grant usage on *.* to [email protected] identified by 'amarokpasswd'; 
mysql> grant all privileges on amarokdb.* to [email protected] ; 
+0

Tôi đang sử dụng root, nhưng tôi cũng đã cố gắng tạo người dùng và cấp quyền truy cập cho anh ấy chắc chắn ... không hoạt động:/ –

2

Tôi đã thử và có kết nối thành công. Trước tiên, tạo cơ sở dữ liệu trong phpmyadmin - ví dụ: 'Mydb' và sau đó trong mã đặt connection.url với giá trị

'jdbc:mysql://localhost:3306/mydb' 

này Nếu bạn không tạo ra một cơ sở dữ liệu đầu tiên nó sẽ không kết nối

Các vấn đề liên quan