mysql无法插入中文字符或者报错SQLExeception

时间:2021-10-25 07:46:48

可参考


解决:mysql无法插入中文字符或者报错SQLExeception

最近在使用Hibernate的时候遇到了很多小问题,其中就有mysql无法插入中文字符或者报错SQLExeception这个问题,

对于这个问题其实直接进入可参考的链接,跟着照做即可,

其实主要需要两步修改才能完成

1,更改mysql安装目录里面的my.ini配置文件(windows系统)中牵扯到设置character的地方就改为GBK,即default-character-set=GBK;(好像一共有两处)

(注:更改完配置文件后需要重启mysql服务,使其生效。)

2,还需要更改创建的表中相应的字段的character设置为GBK,

      如更改users表中的username字段执行:  alter table users modify username char(20) character set gbk;

(注:如果操作的表中已经有数据的话,直接执行上面的语句会报错,需要首先清空表中的数据,才能成功更改字符集)

        因此,如果表中已经插入数据 的话,先执行语句:truncate table users;

再执行语句: alter table users modify username char(20) character set gbk;

首先说明一下,我为什么改成gbk,而不是utf-8;因为我主要需要在控制台浏览数据,而windows的控制台显示数据默认是支持GBK的,

如果你把表中的字段字符集更改成utf8的话,那么在windows的控制台看起来是乱码的,因此为了不修改控制台的支持的字符集,我们就选择了

GBK字符集,GBK显示中文是没有问题的。

扯扯Hibernate:

其实以前就是用过hibernate,可能也遇到这种坑,由于太懒,就没有记录,久而久之,就忘了,现在还是记录一下吧!

既然是用Hibernate时遇到的问题,我就记录一下Hibernate出现的所有问题,使用懒人必备的maven,

    一般Hibernate使用起来比较简单,

1,这里的Hibernate的版本其实是关乎到你依赖的jar包,一开始我就没注意,只是引入了Hibernate(3点几的版本)+mysql驱动

但是结果报错,Hibernate错误代码中显示没有Proxy Class之类的提示,后来一查,是Hibenate的低版本里面还需要再额外引入javaassist包,

真是麻烦,但是Hibernate的高版本里面就集成了javaassist,因此我把Hibernate版本改为4点几的版本就好了。

2,如果你的映射文件不是用的注解实现的话,就需要自己编写Bean类.hbm.xml文件,这里不注意的话容易写错,因此自己写映射文件时一定要注意,细心,我这里老是因为粗心写错。(其实Bean类的字段与数据库中建立的表的字段顺序不需要一致哈)

3,还有就是hibernate的配置文件hibernate.cfg.xml,这个文件设置mysql的使用的数据库,用户名,密码等,还需要映射引入Bean类,这个文件一定要包进项目里面, 我一般放在项目下的src目录下。