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