2011-12-22 2 views
3

Я пытаюсь сохранить следующий твит в базу данных MySQL, и он не работает со следующим исключением. Как это исправить? Любая помощь приветствуется. Я использую базу данных charset utf8, и я думаю, что !??? в сообщении здесь проблематично.Невозможно сохранить сообщения, содержащие специальные символы

твит = Мне запрещено ездить @ USS из-за моего роста, я полагаю, что сидеть в середине, если есть авария, но я все равно люблю свой рост! ???

Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\x8D\xF0\x9F...' for column 'message' at row 1 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) 
    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:2624) 
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127) 
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427) 
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345) 
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330) 
    at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:94) 
    at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:57) 
+0

чую две возможные проблемы. 1. ** ** и 2. ** @ **. Попробуйте удалить и из строки, и попытаться сохранить. – ManuPK

+1

«Кажется более проблематичным для меня. Как выглядит ваш синтаксис для обновления? Я уверен, что вы используете встроенный SQL, который открывает дверь для SQL-инъекции. Вы должны действительно использовать параметры. Это устранит вашу проблему и улучшит безопасность кода. – xQbert

ответ

2

в драйвере Путь URL использовать следующие параметры

jdbc:mysql://<host>:<port>/<db>?useUnicode=true&characterEncoding=UTF-8 
+0

Я пробовал этот драйвер, но все равно у меня такая же проблема. – diya

+0

Я решил проблему, используя только characterEncoding = UTF-8 –