今天用别人的电脑建了个hibernate的小demo,出了点状况。插入中文数据失败,具体信息如下:
Hibernate: select max(id) from perfack
Hibernate: insert into perfack (username, password, age, id) values (?, ?, ?, ?)
六月 08, 2018 11:34:05 下午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1366, SQLState: HY000
六月 08, 2018 11:34:05 下午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Incorrect string value: '\xE9\x9D\x9E\xE5\xB8\xB8...' for column 'username' at row 1
六月 08, 2018 11:34:05 下午 org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl release
INFO: HHH000010: On release of batch it still contained JDBC statements
六月 08, 2018 11:34:05 下午 org.hibernate.internal.ExceptionMapperStandardImpl mapManagedFlushFailure
ERROR: HHH000346: Error during managed flush [org.hibernate.exception.GenericJDBCException: could not execute statement]
提交事务失败!
0
我急忙检查hibernate的配置文件,发现配置文件中已经设置了charactorEncoding为UTF-8。感觉问题不是出在这里,连忙检查数据库的字符编码集。果然,问题出在这里。
修改之后,还是报相同错误。我就蒙了!!!WTF!!!赶紧百度了一下,果然前人有掉坑里的。我也赶紧上车,这是我只是修改了数据库的编码,已经存在的列并不会随之改变,需要单独修改相应列。
改完了赶紧运行一下,成功。运行结果及截图:
Hibernate: select max(id) from perfack
Hibernate: insert into perfack (username, password, age, id) values (?, ?, ?, ?)
1