java.sql.SQLException: Неверное строковое значение: '\ xF3 \ xBE \ x8D \ x81' - PullRequest
13 голосов
/ 31 июля 2010

При попытке сохранить некоторые твиты я получаю следующее исключение:

Причина: java.sql.SQLException: Неверное строковое значение: '\ xF3 \ xBE \ x8D \ x81' для столбца twtText в строке 1 в com.mysql.jdbc.SQLError.createSQLException (SQLError.java:1055) в com.mysql.jdbc.SQLError.createSQLException (SQLError.java:956) на com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:3491) в com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:3423) на com.mysql.jdbc.MysqlIO.sendCommand (MysqlIO.java:1936) на com.mysql.jdbc.MysqlIO.sqlQueryDirect (MysqlIO.java:2060) в com.mysql.jdbc.ConnectionImpl.execSQL (ConnectionImpl.java:2542) на com.mysql.jdbc.PreparedStatement.executeInternal (PreparedStatement.java:1734) at com.mysql.jdbc.PreparedStatement.executeUpdate (PreparedStatement.java:2019) at com.mysql.jdbc.PreparedStatement.executeUpdate (PreparedStatement.java:1937) at com.mysql.jdbc.PreparedStatement.executeUpdate (PreparedStatement.java:1922) в org.hibernate.id.IdentityGenerator $ GetGeneratedKeysDelegate.executeAndExtract (IdentityGenerator.java:94) в org.hibernate.id.insert.AbstractReturningDelegate.performInsert (AbstractReturningDelegate.java:57)

Структура моей таблицы приведена ниже, все столбцы в формате UTF-8,

 CREATE TABLE `tblkeywordtracking` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `word` varchar(200) NOT NULL,
  `tweetId` bigint(100) NOT NULL,
  `twtText` varchar(800) DEFAULT NULL,
  `negTwtText` varchar(1000) DEFAULT NULL,
  `language` text,
  `links` text,
  `negWt` double DEFAULT NULL,
  `posWt` double DEFAULT NULL,
  `tweetType` varchar(20) DEFAULT NULL,
  `source` text,
  `sourceStripped` text,
  `isTruncated` varchar(40) CHARACTER SET latin1 DEFAULT NULL,
  `inReplyToStatusId` bigint(30) DEFAULT NULL,
  `inReplyToUserId` int(11) DEFAULT NULL,
  `isFavorited` varchar(40) CHARACTER SET latin1 DEFAULT NULL,
  `inReplyToScreenName` varchar(40) DEFAULT NULL,
  `latitude` bigint(100) NOT NULL,
  `longitude` bigint(100) NOT NULL,
  `retweetedStatus` varchar(40) CHARACTER SET latin1 DEFAULT NULL,
  `statusInReplyToStatusId` bigint(100) NOT NULL,
  `statusInReplyToUserId` bigint(100) NOT NULL,
  `statusFavorited` varchar(40) CHARACTER SET latin1 DEFAULT NULL,
  `statusInReplyToScreenName` text,
  `screenName` text,
  `profilePicUrl` text,
  `twitterId` bigint(100) NOT NULL,
  `name` text,
  `location` text,
  `bio` text,
  `utcOffset` int(11) DEFAULT NULL,
  `timeZone` varchar(100) DEFAULT NULL,
  `frenCnt` bigint(20) DEFAULT '0',
  `createdAt` datetime DEFAULT NULL,
  `createdOnGMT` text CHARACTER SET latin1,
  `createdOnServerTime` datetime DEFAULT NULL,
  `follCnt` bigint(20) DEFAULT '0',
  `favCnt` bigint(20) DEFAULT '0',
  `totStatusCnt` bigint(20) DEFAULT NULL,
  `usrCrtDate` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `id` (`id`,`word`),
  KEY `twtText` (`twtText`(333)),
  KEY `word` (`word`,`tweetType`),
  KEY `posWt` (`posWt`,`negWt`)
) ENGINE=MyISAM AUTO_INCREMENT=1740 DEFAULT CHARSET=utf8;

Ответы [ 3 ]

9 голосов
/ 31 июля 2010

Вы должны добавить набор символов и параметры сортировки в столбец twtText. Итак, ваша колонка должна выглядеть так:

twtText varchar(800) character set utf8 collate utf8_polish_ci DEFAULT NULL,

Измените utf8_polish_ci на то, что вы хотите.

Выполните следующий запрос, чтобы увидеть доступные параметры сортировки:

SHOW COLLATION;
5 голосов
/ 31 июля 2010

MySQL 5.0 / 5.1 не поддерживает 4-байтовые символы UTF8, это известное ограничение.MySQL 5.5 поддерживает 4-байтовые символы UTF8.

См. 9.1.10.Поддержка Unicode

2 голосов
/ 31 июля 2010

Это похоже на действительную последовательность utf-8, которая кодирует следующий символ U + FE341 .

Как видите, это символ Unicode, который использует более 2 байтов,Начиная с , * и , * , я делаю вывод, что MySQL по-прежнему не поддерживает это подмножество символов Unicode (по крайней мере, для версий <5.5). </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...