2013-06-07 10 views
0

У меня проблема с проектом моего последнего года. Я использую Spring + Hibernate для доступа к моей базе данных MySql. Я использую Tapestry для слоя вида.Вопрос о кодировке MySql, вставляющий строку SPRING + HIBERNATE

Мне нужно вставить строку, в которой одно из полей соответствует полю перечисления. Одним из значений перечисления является «Polígono». Моя кодировка DB установлена ​​в UTF-8.

Я бросил свою БД в XML-файл (настраиваемый формат), который я разбираю. Purppose создает БД через этот XML-файл на разных устройствах. Я удалил свою тестовую БД, и я попытался восстановить ее из файла XML. Word "Polígono" появляется как есть в файле (кодировка UTF-8), но если я попытаюсь вставить его с помощью моих служб и DAO, я получу это (tipo_via - это столбец DB, где я пытаюсь вставить это значение):

Исключение JDBC при доступе к Hibernate: SQLException для SQL [n/a]; Состояние SQL [01000]; код ошибки [1265]; Данные усечены для столбца 'tipo_via' в строке 1; вложенное исключение org.hibernate.exception.GenericJDBCException: Данные усечены для столбца «tipo_via» в строке 1

Если я печатаю то, что я читал из XML (строк я пытаюсь присвоить поле строки) Я получаю это на консоли: Полигоно Если я создаю строку со значением «Polígono» и распечатать его я получаю на консоли: Полигоно

кто-нибудь знает, как решить эту проблему? Это очень странно. Заранее спасибо

ответ

0

Проблема решена. Я думаю, что файл, в котором я написал свой SQL-скрипт для создания БД, не был в кодировке UTF8. Я проверил значения enum для этого поля с помощью менеджера GUI DB (SQLYog), и я проверил, что эти значения были ошибочно закодированы. Я исправил его, и проблема исчезла!

Смежные вопросы