我使用的MySQL 8.0版本,原因貌似是由于默认字符集已从latin1改为了utf8mb4:
Character Set Support
Important Change: The default character set has changed from latin1 to utf8mb4. These system variables are affected:
The default value of the character_set_server and character_set_database system variables has changed from latin1 to utf8mb4.
The default value of the collation_server and collation_database system variables has changed from latin1_swedish_ci to utf8mb4_0900_ai_ci.
原代码
。
public class ConnectionTest {
@Test
public void testConnection() throws SQLException {
Class class1 = Class.forName("com.mysql.jdbc.Driver");
Driver driver = (Driver) class1.newInstance();
//jdbc:mysql:协议
//localhost: ip地址
//3306: 默认mysql的端口号
//test: test数据库
String url = "jdbc:mysql://localhost:3306/test";
//将用户名和密码封装在Properties中
Properties info= new Properties();
info.setProperty("user", "root");
info.setProperty("password", "你自己的密码");
Connection conn = driver.connect(url,info);
System.out.println(conn);
}
}
报错:
java.sql.SQLException: Unknown initial character set index ‘255’ received from server. Initial client character set can be forced via the ‘characterEncoding’ property.
修改后代码
。
public class ConnectionTest {
@Test
public void testConnection() throws SQLException {
Class class1 = Class.forName("com.mysql.jdbc.Driver");
Driver driver = (Driver) class1.newInstance();
//jdbc:mysql:协议
//localhost: ip地址
//3306: 默认mysql的端口号
//test: test数据库
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8";
//将用户名和密码封装在Properties中
Properties info= new Properties();
info.setProperty("user", "root");
info.setProperty("password", "你自己的sql密码");
Connection conn = driver.connect(url,info);
System.out.println(conn);
}
}
就可以解决了。