Ошибка при запуске кода Java Code (неизвестный набор символов: 'utf8mb4')? - PullRequest
1 голос
/ 27 марта 2012

Я пытаюсь изучить программирование на Java и как связать его с базой данных MySQL ...

Вот код:

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)

Мне действительно нужна помощь ....

Ответы [ 2 ]

4 голосов
/ 27 марта 2012

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

0 голосов
/ 05 сентября 2013

Проверьте вашу базу данных и убедитесь, что вся база данных + таблицы + поля имеют одинаковую кодировку. Это пример реальной таблицы, вы можете видеть, что кодировка установлена ​​для полей И для таблицы. И, конечно же, база данных была создана с помощью набора символов.

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;
...