Çözme bir "iletişim bağlantısı hatası" yerli mal ve MySQL ile
Yerel MySQL sunucusuna bağlanmak için çalışıyorum ama bir hata almaya devam ediyorum.
İşte kod.
public class Connect {
public static void main(String[] args) {
Connection conn = null;
try {
String userName = "myUsername";
String password = "myPassword";
String url = "jdbc:mysql://localhost:3306/myDatabaseName";
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(url, userName, password);
System.out.println("Database connection established");
} catch (Exception e) {
System.err.println("Cannot connect to database server");
System.err.println(e.getMessage());
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
System.out.println("Database Connection Terminated");
} catch (Exception e) {}
}
}
}
}
ve hatalar :
Cannot connect to database server
Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2333)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2370)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2154)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at Connect.main(Connect.java:16)
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:218)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:294)
... 15 more
Sınıf, emin benim yapmış oldum.cümlesi ağ seçeneği diye atlamak vardı.
java sürüm 1.2.0_26 (64 bit) mysql 5.5.14 mysql bağlayıcı 5.1.17
Kullanıcı veritabanı erişim vardı emin yaptı.
CEVAP
Benim iki programı da aynı sorun vardı. Benim hata bu oldu:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Bazı günler bu sorunu çözmek için harcıyorum. Farklı web sitelerinde adları geçen pek çok yaklaşım denedim, ama onlardan olmayan çalıştı. Sonunda Şifremi değiştirdim ve sorunun ne olduğunu öğrendim. Farklı yaklaşımlar hakkında size anlatmaya çalışacağımonları buraya topla.
Bu hata için çözüm bulmak için internette arıyordum olsa da, çözdümen az bir kişi için çalışan pek çok çözüm var, ama diğerleri onlar için çalışmıyor ki!neden bu hata için pek çok yaklaşım vardır? Gibi görünüyorbu hata oluşabilirgenelliklesunucuya bağlanırken bir sorun olduğunda. Belki de sorun yanlış sorgu dizesi veya veritabanına çok fazla bağlantı yüzünden.
Tüm çözümler tek tek denemenizi öneririm ve sakın PES etme!
İşte sorun bu çözüm ile çözüldü kim her biri için internet üzerinden ve en az bir kişi var bulduğum çözümler.
noktası: MySQL ayarlarını değiştirmek için, aşağıdaki dosyaları için başvurabilirsiniz: çözümler İçin
Linux: /etc/mysql/my.CPT
Windows: D:\Program Files\mysql\bin\my.ını
İşte çözüm:
- "bind-address" özniteliği . değişen
Yorumsuz "bind-address" veya aşağıdaki IPs birini değiştirmek için nitelik:
bind-address="127.0.0.1"
ya
bind-address="0.0.0.0"
- "geç " ağ" . yorum
Eğer varsa "geç " ağ" MySQL config dosyasında satır ekleyerek Açıklama "#" Bu satırın başındaki işareti.
- "" ve "" . interactive_timeout waıt_tımeout değiştirin
MySQL config dosyasına bu satırları ekleyin:
wait_timeout =numarası
= interactive_timeoutnumarası
= connect_timeoutnumarası
- İşletim Sistemi proxy ayarlarını kontrol edin
Emin olun güvenlik duvarı ya da Anti virüs yumuşak mallar MySQL hizmeti engellemeyin.
- bağlantı dizesini değiştirin
Sorgu dize kontrol edin. bağlantı dizesi böyle bir şey olmalıdır:
dbName = "my_database";
dbUserName = "root";
dbPassword = "";
String connectionString = "jdbc:mysql://localhost/" dbName "?user=" dbUserName "&password=" dbPassword "&useUnicode=true&characterEncoding=UTF-8";
Senin dize boşluk olmadığından emin olun. Tüm bağlantı dizesi herhangi bir boşluk karakteri olmadan devam edilmelidir.
"" Bağlantı noktası, 127.0.0.1.gibi localhost yerine deneyin Bağlantı dizesi için port numarası eklemek için deneyin:
String connectionString = "jdbc:mysql://localhost:3306/my_database?user=root&password=Pass&useUnicode=true&characterEncoding=UTF-8";
MySQL için genellikle varsayılan portu 3306.
Kullanıcı adı değiştirmek ve kullanıcı adı ve parola unutmayın ve MySQL sunucunuzun şifre yok.
- senin İLGİLENİYORUZ sürücü kitaplığı dosya güncelleme
- farklı olduğunu GÖRDÜM ve JREs (GÖRDÜM 6 ve 7 gibi) test
- max_allowed_packet değişiklik yok
"max_allowed_packet en büyük paket boyutunu, paket. maksimum sayısını belirten" MySQL yapılandırma dosyası içinde bir değişken. Bu hatayı çözmek için yardımcı olur.
- tomcat güvenliği değiştirin
TOMCAT6_SECURİTY=TOMCAT6_SECURİTY=hayır için Evet olarak değiştirin
- validationQuery özelliği kullanın
validationQuery="() seçmek artık" her sorgu yanıt olduğundan emin olmak için kullanın
- AutoReconnect
Bağlantı dizesi için: bu kodu ekleyin
&autoReconnect=true&failOverReadOnly=false&maxReconnects=10
Bu çözümlerin olmayan benim için çalıştı, ancak, onları denemenizi öneririm. Aşağıdaki adımlar ile sorunu çözen insanlar var çünkü.
Ama benim sorunum ne çözüldü?
Benim sorunum veritabanı Seçer kaldım çok oldu. Her zaman bir bağlantı oluşturmak ve daha sonra kapatıyordum. Bağlantı her zaman kapatıyordum rağmen, ancak sistem birçok bağlantıları ile karşı karşıya ve bana hata verdi.Ne yaptım, tüm sınıf için (veya özel) bir ortak değişken olarak benim bağlantı değişkeni tanımlı ve yapıcı olarak başlatılmış oldu.Her zaman sonra sadece bu bağlantı kullanılır. Benim sorunum çözüldü ve aynı zamanda önemli ölçüde benim hızı arttı.
Sonuç
Bu sorunu çözmek için basit ve benzersiz bir yol yoktur. Sen kendi durumunu düşün ve çözümleri yukarıda seçmenizi öneririm. Program başlangıcında bu hatayı alıp veritabanına bağlanmak için mümkün değilse, bağlantı dizesi içinde sorun olabilir. Ama Eğer bu hatadan sonra birçok başarılı etkileşim için veritabanı sorunu olabilir ile bağlantı sayısı ve düşün değiştirme "waıt_tımeout" ve diğer MySQL ayarlarını veya yeniden yazma kodu nasıl azaltmak bağlantı sayısı.
com.mysql.bulunmaktaydı.özel durumlar....
'ilk iletişim paket okumada MySQL...
İletişim atma "pencereyi simge bo...
Mac OS X 10.6 MySQL yüklerken alıyorum...
Visual Studio derleme hatası düzeltme,...