李刚轻量级JavaEE第六章的坑。。艹李刚自己有没试过这些代码的啊,6.4这一份HqlQuery.java里需要的表,根本就跟他提供的sql脚本对不上啊。。坑爹啊,而且字符编码集也有问题。
出现这个原因是编码不统一的问题。
首先字符编码集有GBK、GB2312、UTF8,区别详见 http://down.chinaz.com/server/201111/1423_1.htm
再看了手头上的一些源代码,结论是,感觉用utf8比较合适
那出现这个问题如何修复
1.查看一下MySQL的编码集,在MySQL控制台输入 show variables like ‘char%‘;
我们目标应该是这样
+--------------------------+------------------------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | E:\Software\MySQL\MySQL_Server\share\charsets\ |
+--------------------------+------------------------------------------------+
如果里面混杂了一些gbk,gb2312的话,就要进行下面一步修改,否则的话直接跳到第3步
2. 找到配置文件my.ini的位置,我的是在E:\Software\MySQL\Data,如果没有的话,按照一下步骤找到,先找到你打开MySQL的那个快捷方式,按右键属性,目标一栏会有一些参数,我的是 E:\Software\MySQL\MySQL_Server\bin\mysql.exe "--defaults-file=E:\Software\MySQL\Data\my.ini" "-uroot" "-p",注意红色字体就是配置文件所在位置。
打开后看到的
[mysql]
default-character-set=utf8
这里的值应该设置为utf8
3. 重启一下MySQL,再用第一步的命令查看下是否设成utf8了
4. 然后在插入之前要先加多一条语句 set names utf8;
比如
set names utf8;
INSERT INTO event_inf VALUES
(1,‘2004-10-03‘,‘高兴的事情‘),
(2,‘2005-10-03‘,‘普通的事情‘),
(3,‘2004-10-04‘,‘疯狂Java筹备中‘),
(4,‘2005-10-05‘,‘开始疯狂Java‘)
这样子我就没出现Data too long for column ‘title‘ at row 1的问题了,在select了一下看看表,确实已经插入了。
完。
ps:李刚好坑。。感觉出本 李刚书籍踩坑教程 都可以出本书了。。
[MySQL] Data too long for column 'title' at row 1