2012-03-26 104 views
1

我試着去學習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

我真的需要幫助....

+0

導致錯誤的代碼是什麼樣的? – unholysampler 2012-03-26 21:07:10

+0

'main.java'第22行是什麼? – 2012-03-26 21:07:11

+0

您可能想要發佈相關的代碼 – keyser 2012-03-26 21:07:49

回答

3

utf8mb4字符集是特定於MySQL的。這是解釋here。這是一個例外,因爲JDBC驅動程序無法識別該字符集。一種解決方案是將數據庫編碼轉換爲utf8。另一個是使用不同的JDBC驅動程序。 (MySQL Connector/J 5.1.13以上支持utf8mb4。)

+0

我的數據庫是UTF8_unicode_ci已經....它沒有任何意義... – user1294027 2012-03-26 21:16:59

+0

和IM使用連接器/ j 5.1.18 – user1294027 2012-03-26 21:20:00

+0

@ user1294027 - Hrm。你可能使用MySQL服務器6?如果是這樣,您可能需要更新版本的Connector/J。 – 2012-03-26 21:37:25

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;