2012-03-26 4 views
1

Im пытается научиться программированию на Java и как связать его с MySQL Database ...Ошибка при запуске кода кода 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) 

хорошо я искал на Google и YouTube, и нет ответа на такую ​​проблему ... и я установил программы в соответствии с этим руководством шаг за шагом ... (http://www.youtube.com/watch?v=E30_-pQGQXs)

Мне очень нужна помощь ....

+0

Как выглядит ваш код, вызывающий ошибку? – unholysampler

+0

Что находится в строке 'main.java' 22? –

+0

Возможно, вы захотите опубликовать связанный код – keyser

ответ

3

Набор символов utf8mb4 относится к MySQL. Это объясняется here. Исключением является то, что драйвер JDBC не распознает эту кодировку. Одним из решений является преобразование кодировки базы данных в utf8. Другой - использовать другой драйвер JDBC. (MySQL Connector/J 5.1.13 и до поддержки utf8mb4.)

+0

моя база данных UTF8_unicode_ci уже .... это не имеет смысла ... – user1294027

+0

и im using connector/j 5.1.18 – user1294027

+0

@ user1294027 - Hrm. Возможно, вы используете сервер MySQL 6? Если это так, вам может потребоваться более новая версия Connector/J. –

0

Проверьте свою базу данных и убедитесь, что все поля базы данных + таблицы + имеют одинаковую кодировку. Это пример реальной таблицы, вы можете видеть, что кодировка задана для полей 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; 
Смежные вопросы