2017-10-13 2 views
-1

Je peux accéder à ma base de données distante depuis la ligne de commande avec les utilisateurs que je crée mais quand j'essaie de me connecter depuis jdbc je reçois une exception de format numérique.Obtention d'une exception de format numérique lors de l'accès à distance à mysql depuis JDBC

public static final String URL = "jdbc:mysql://ipv6:3306/Library"; 
public static final String USER = "user"; 
public static final String PASSWORD = "correctpass"; 
conn = DriverManager.getConnection(url, user, password); 

lancers francs

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Cannot load connection class because of underlying exception: 'java.lang.NumberFormatException: For input string: "30a:2e1a:2470:7c29:300b:f757:2941:3306"' 

Je peux vous connecter jeter le terminal avec les mêmes informations d'identification thats pourquoi je suis si confus. Merci pour l'aide.

+0

Cet hôte dans l'URL est clairement faux. Peu importe si vous pouvez vous connecter via un terminal. La JVM ne l'aime pas; répare le! – duffymo

+0

L'URL devrait-elle contenir ipv6? alors le premier ':' doit être '::' – Jens

+0

Aussi, les premières versions du pilote peuvent ne pas supporter ipv6. – Mena

Répondre

0

Vous ne savez pas pourquoi utiliser l'adresse IPv6 pour vous connecter, mais cela est possible.

public static final String urlString = “jdbc:mysql://address=(protocol=tcp)(host=your-ipv6-address)(port=3306)/Library”; 
Class.forName(driver); 
public static final String user= "user"; 
public static final String password= "correctpass"; 
DriverManager.setLoginTimeout(getConnectionTimeOut()); 
dbConnection = DriverManager.getConnection(urlString,user,password); 

Essayez ci-dessus. En raison de l'adresse de lecture de la connexion mysql, on s'attendait à ce que le port soit lu après les deux points, et tous les ports sont en nombre. Puisque vous n'utilisez pas l'adresse standard, il vous retournera une erreur en essayant d'analyser le port (tous les nombres sont attendus - mais il a des lettres, donc il frappe l'exception du format numérique). Si vous utilisez IPV6, vous devez le déclarer comme IPV6.

+0

si je crée un nouvel utilisateur avec un accès depuis mon ipv4. Je ne peux même pas me connecter depuis le terminal. cela pourrait-il être un problème de pare-feu? – dcolton