1. 程式人生 > >Java/Spring使用IPv6地址連線到MySQL伺服器

Java/Spring使用IPv6地址連線到MySQL伺服器

地址格式

IPv6 地址有兩個邏輯部分:64 位網路字首和 64 位主機地址部分。(主機地址通常是從介面 MAC 地址自動生成的。)

IPv6 地址由 8 組 16 位十六進位制值表示,以冒號(:)分隔,如下所示:

IPv6 地址的典型示例:

2001:0db8:85a3:0000:0000:8a2e:0370:7334

另外,十六進位制數字不區分大小寫。

使用IPv4地址連線到MYSQL的方法(傳統方式)

urlString = "jdbc:mysql://10.144.1.216:3306/dbName";
Class.forName(driver);
DriverManager.setLoginTimeout(getConnectionTimeOut());
dbConnection = DriverManager.getConnection(urlString,user,password);

使用IPv6地址連線到MYSQL的方法(新方法)

urlString = "jdbc:mysql://address=(protocol=tcp)(host=fe80::5ed6:baff:fe14:a23e)(port=3306)/db";
Class.forName(driver);
DriverManager.setLoginTimeout(getConnectionTimeOut());
dbConnection = DriverManager.getConnection(urlString,user,password);

注意

如果直接在 IPv4 地址格式的基礎上,將 IPv4 地址直接換成 IPv6 地址,啟動專案時,可能會出現下面的異常:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Cannot load connection class because of underlying exception: 'java.lang.NumberFormatException: For input string: "fe80::5ed6:baff:fe14:a23e]:3306"'.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

附 Spring 配置方式

spring.datasource.url=jdbc:mysql://address=(protocol=tcp)(host=fe80::5ed6:baff:fe14:a23e)(port=3306)/test?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

公眾號提供CSDN資源免費下載服務!

你的關注是對我最大的鼓勵!

最近蒐集到傳智播客 2018 最新 Python 和 Java 教程!關注本公眾號,後臺回覆「2018」即可獲取下載地址