运行Java代码时出错(未知字符集:'utf8mb4')?
我试着去学习Java编程,以及如何将它与mysql数据库链接...运行Java代码时出错(未知字符集:'utf8mb4')?
下面的代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class main {
public static void main(String[] args)
throws Exception
{
System.out.println("Loading Driver ..");
System.out.println("Loading Driver ...");
System.out.println("Loading Driver ....");
System.out.println("Loading Driver .....");
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Driver Loaded");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/javabook", "root", "1234"); //Connect
System.out.println("Database Connected");
PreparedStatement statement = con.prepareStatement(" SELECT * From acc_types");
ResultSet result = statement.executeQuery();
while (result.next())
{
System.out.println(result.getString(1)+ ""+result.getString(2));
}
}
}
说:
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown character set: 'utf8mb4'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2618)
at com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1880)
at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3499)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2384)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
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(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
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(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at main.main(main.java:22)
嗯,我一直在寻找的谷歌和YouTube,并没有回答这样的问题......并且我已经按照本教程逐步安装了程序... (http://www.youtube.com/watch?v=E30_-pQGQXs)
我真的需要帮助....
utf8mb4
字符集是特定于MySQL的。这是解释here。这是一个例外,因为JDBC驱动程序无法识别该字符集。一种解决方案是将数据库编码转换为utf8
。另一个是使用不同的JDBC驱动程序。 (MySQL Connector/J 5.1.13以上支持utf8mb4
。)
我的数据库是UTF8_unicode_ci已经....它没有任何意义... – user1294027 2012-03-26 21:16:59
和IM使用连接器/ j 5.1.18 – user1294027 2012-03-26 21:20:00
@ user1294027 - Hrm。你可能使用MySQL服务器6?如果是这样,您可能需要更新版本的Connector/J。 – 2012-03-26 21:37:25
检查您的数据库并确保整个数据库+表+字段具有相同的字符集。 这是一个真正的表格示例,您可以看到字符集是为字段AND设置的。当然,数据库也是用字符集创建的。
CREATE TABLE `politicas` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Nombre` varchar(250) CHARACTER SET utf8mb4 NOT NULL,
`Texto` text CHARACTER SET utf8mb4 NOT NULL,
`Lng` varchar(2) CHARACTER SET utf8mb4 NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
导致错误的代码是什么样的? – unholysampler 2012-03-26 21:07:10
'main.java'第22行是什么? – 2012-03-26 21:07:11
您可能想要发布相关的代码 – keyser 2012-03-26 21:07:49