erhalte ich die Fehler "Communications link failure"
bei dieser Codezeile:Kann nicht auf MySQL-Server von Java verbinden
mySqlCon = DriverManager.getConnection("jdbc:mysql://**server ip address**:3306/db-name", "mu-user-name", "my-password");
ich alles in this post geprüft:
- I erhöht max-allowed-Paket in meinem. CNF in etc/mysql: max_allowed_packet = 5073741824 ------ [mysqldump] max_allowed_packet = 1G
- die bIND-Adresse ist: 127.0.0.1
- Alle Zeitüberschreitungswerte ist gleich eine Anzahl
- Tomcat noch nicht auf dem Server (neuer Server)
- Es gibt keine Skip-Vernetzung in my.cnf
- Ich kann ping den Server
- Ich bin mit der MySQL-Datenbank installiert ist via ssh
Wenn ich die Abfrage-String um dies zu ändern:
mySqlCon = DriverManager.getConnection("jdbc:mysql://**server ip address**:22/127.0.0.1:3306/db-name", "mu-user-name", "my-password");
erhalte ich die Fehler Packet for query is too large (4739923 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.
Während ich die Paketgröße auf my.cnf geändert und danach den mysql-Dienst neu gestartet habe.
Irgendwelche Vorschläge?
HINWEIS:
ich durch ssh mit diesem Code eine Verbindung herstellen können, aber auf diese Weise rational scheint nicht! Ich kann einmal in main verbinden und dann sollte ich die Verbindung zu allen Klassen bestehen.
public my-class-constructor() {
try {
go();
} catch (Exception e) {
e.printStackTrace();
}
mySqlCon = null;
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://" + rhost + ":" + lport + "/";
String db = "my-db-name";
String dbUser = "dbuser";
String dbPasswd = "pass";
try {
Class.forName(driver);
mySqlCon = DriverManager.getConnection(url + db, dbUser, dbPasswd);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void go() {
String user = "ssh-user";
String password = "ssh-pass";
String host = "ips-address";
int port = 22;
try {
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, port);
lport = 4321;
rhost = "localhost";
rport = 3306;
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
System.out.println("Establishing Connection...");
session.connect();
int assinged_port = session.setPortForwardingL(lport, rhost, rport);
System.out.println("localhost:" + assinged_port + " -> " + rhost
+ ":" + rport);
} catch (Exception e) {
System.err.print(e);
e.printStackTrace();
}
}
Können Sie den Server anpingen? –
es scheint, dass Ihre Abfrage zu groß ist, versuchen Sie eine kleinere Abfrage z. "Wählen Sie * aus dem Tabellenlimit 10;" – nafas
Wenn die MySQL-Datenbank remote ist, haben Sie die Berechtigungen korrekt konfiguriert? – John