【发布时间】:2015-03-07 02:00:19
【问题描述】:
对于上下文:尝试将 Twitter 文本加载到 MySQL 数据库中。一些推文包含utf8mb4 字符,会引发java.SQL.Exception。我解决了这个问题,感谢this post.
现在,Java 代码运行没有错误;但是,我无法在我的桌子上执行简单的select * from test.tweet。
我收到以下 SQL 错误:
错误代码:0 45) 。请报告charsetnr (
SQL 代码:
create table test.tweet (
text varchar(200) character set utf8mb4 collate utf8mb4_unicode_ci not null);
Java 代码: (我知道这是可行的)
// create a mysql database connection
String myDriver = "com.mysql.jdbc.Driver";
String myUrl = "jdbc:mysql://localhost:3306/test?";
Class.forName(myDriver).newInstance();
Connection conn = DriverManager.getConnection(myUrl, "root", "pass");
PreparedStatement setNames = conn.prepareStatement("SET NAMES 'utf8mb4'");
setNames.execute();
//Load the tweets into a mySQL DB
loadTweets(jsonObject, conn);
互联网上没有关于此错误的任何信息。任何想法为什么我无法查询此错误消息:
错误代码:0 45) 。请报告charsetnr (
【问题讨论】:
-
我实际上解决了我自己的问题,尽管声誉很低,但我想提供答案,因为我认为这是独一无二的。首先,我必须删除整个 SCHEMA。其次,我执行了 SQL 语句:set names 'utf8mb4'。三、我创建了一个表:CREATE table test.test(id primary key not null, text varchar(64) charset utf8mb4 collate utf8mb4_unicode_ci) character set utf8mb4。第四,每次我想执行我的 Java PreparedStatement 时,我实际上都会在之前立即执行一个“set names 'utf8mb4'(如上所示)......就是这样。希望这对某人有所帮助。
标签: java mysql twitter utf8mb4