У меня возникли проблемы с подключением приложения Grails к базе данных MySQL, размещенной на RDS Amazon. Он работал отлично, я понял, что пользователи в России вводят кириллические символы в мою форму, в результате чего база данных MySQL показывает данные как ????????.Подключение к базе данных MySQL UTF-8 с Grails
Итак, я converted the data in the database from Latin1 to UTF-8. (почему о, почему не UTF-8 по умолчанию?)
Я добавил "? UseUnicode = да & characterEncoding = UTF-8" до конца моего JDBC строка соединения:
jdbc:mysql://myserver.amazonaws.com/mydatabase?useUnicode=yes&characterEncoding=UTF-8
Теперь, когда Grails подключается к базе данных, я получаю ошибку
java.io.StreamCorruptedException: неверный заголовок потока: C2ACC3AD в Явь a.io.ObjectInputStream.readStreamHeader (ObjectInputStream.java:800) на java.io.ObjectInputStream. (ObjectInputStream.java:297)
Одна из возможностей, которые я видел, как описано разрешение на это с другой рамки должны иметь подключение к базе данных
SET NAMES UTF8
Сразу после подключения к базе данных. Однако я не знаю, как заставить Grails сделать это, потому что Grails обрабатывает процесс подключения к базе данных под капотом. Есть идеи?
Обновленный URL JDBC должен быть всем, что вам нужно. Это выглядит подозрительно, так как некоторые данные в какой-то момент были сериализованы как объект в базе данных, и эти данные теперь уже недействительны. Это исключение возникает только для запросов в определенном классе домена? –
ДА. Вот и все. У меня был класс домена, который хранил немного метаданных в виде сериализованной хэш-карты. После того, как я установил для всех столбцов данных значение null, проблема была исправлена. Теперь я просто выясню, как отразить эти метаданные с чем-то лучшим ... Спасибо! –
Пожалуйста, ответьте на свой вопрос, а затем остановите его, показывая, что он «не задан». – Danack