部署完项目,测试一下,诶,数据出来了 没有多大问题(暗舒一口气)。继续测吧,一点新建完了,报错了,看看什么错误
一看完了 java.sql.SQLException: Illegal mix of collations (latin1_swedish_ci,IMPLICIT)
and (utf8_general_ci,COERCIBLE) for operation '=' 是这个错误 ,什么原因呢,第一次遇到。
头大了。去查文档说是:结果集中有两种字符集。 我晕了 ,怎么会这样呢,看看表结构,一种啊。 继续查吧。
代码如下 | 复制代码 |
SHOW VARIABLES LIKE 'character_set_%'; 查看一下 显示 +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8| | character_set_connection | utf8| | character_set_database | latin1 | | character_set_results | utf8| | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /home/jh/mysql/share/mysql/charsets | |
+--------------------------+----------------------------+
再用 SHOW VARIABLES LIKE 'collation_%'; 查看一下 显示
代码如下 | 复制代码 |
+----------------------+-------------------+ | Variable_name | Value | +----------------------+-------------------+ | collation_connection | utf8_swedish_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci | +----------------------+-------------------+ |
原来如此啊 哈哈 知道错在哪里 剩下的就好办了
解决方法:
依次执行:
代码如下 | 复制代码 |
set character_set_database =utf8;
set character_set_results =utf8;
set character_set_server =utf8;
set character_set_system =utf8; --此处utf-8也可以
然后执行:
SET collation_server = utf8_general_ci
SET collation_database = utf8_general_ci |
执行完之后,请检查mysql下每个数据库,表,字段是否都是utf8,不是则改过来,这样子就不会出现
最笨的方法是重装一下数据库。(一般不要用这种方法呀)