以前用的数据库是MySQL4.0,根据项目需要MySQL升级到5.0.唉,升级就升级吧 。头的要求。没办法,做下属的只有照做了。升级完数据库,部署完项目,测试一下,诶,数据出来了 没有多大问题(暗舒一口气)。继续测吧,一点新建完了,报错了,看看什么错误 一看完了 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_chinese_ci
SET collation_database = utf8_chinese_ci
执行完之后,请检查mysql下每个数据库,表,字段是否都是utf8,不是则改过来,这样子就不会出现
最笨的方法是重装一下数据库。(一般不要用这种方法呀)
最终解决方法:
1.1 如果是windows版本的mysql,那么在安装的时候,系统就会提示用哪种编码。
如果安装的时候设置错误了,修改mysql安装目录下的my.ini文件:
[mysql]
default-character-set=utf8
...
# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=utf8
配置好后,重启mysql。
1.2 如果是linux版本的mysql
修改mysql的配置文件,使数据库与服务器操作系统的字符集设置一致。
vi /etc/my.cnf 设置(如果没有发现这个文件,就新建1个)
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8 (增加的关键一句,使得数据库缺省以utf8存储)
当然,修改后,要重启数据库。(这样设置后对新建的数据库表才起作用)
用SHOW VARIABLES LIKE 'character_set_%';命令查看到如下内容:
+--------------------------+-----------------------------------------------------------------------+
| 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 | /home/jh/mysql/share/mysql/charsets |
+--------------------------+-----------------------------------------------------------------------+
发现关键项目已经用了utf8,但这样还不够,还要保证客户端也是用utf8的字符集来操作的。
登录的时候,要用以下命令:mysql --default-character-set=utf8 -u root -p
再次用SHOW VARIABLES LIKE 'character_set_%';命令查看,结果变成了:
+--------------------------+-----------------------------------------------------------------------+
| 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 | /home/jh/mysql/share/mysql/charsets/ |
+--------------------------+-----------------------------------------------------------------------+
这样才能保证客户端所发命令都是基于utf8格式的,比如说建立数据库和表,默认就会以utf8编码,而无须再次指定。(再次说一句对新建的数据库和表起作用)。
分享到:
相关推荐
swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' 这个错误,所以在stackover flow 中找到了对这个数据库,以及数据表中进行更改字符集的方法。 SET collation_connection
mysql数据库和中文支持很不友好,经常见到“Illegal mix of collations for operation”错误,该如何解决呢?下面小编给大家带来了mysql数据库中涉及到哪些字符集及彻底解决中文乱码的解决方案,非常不错,一起看看...
今天帮同事处理一个SQL(简化过后的)执行...ERROR 1267 (HY000): Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,NUMERIC) for operation ‘>’ 乍一看挺莫名其妙的,查了下手册,
主要介绍了MySQL 编码utf8 与 utf8mb4 utf8mb4_unicode_ci 与 utf8mb4_general_ci的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '= 所以,自己把还没产生数据的表都删除,重新建立ut8表 此文件sql语句都是没产生数据的表,直接可以用py或者...
ERROR 1267 (HY000): Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,NUMERIC) for operation '>' 乍一看挺莫名其妙的,查了下手册,发现有这么一段: The language us
MySQL多表join时报错如下:[Err]1267 – Illegal mix of collations(utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation ‘= 就是说两个表的排序规则(COLLATION)不同,无法完成比较。...
学习心得使用mpvue学习完成一次完整的小程序开发,...0900_ai_ci,IMPLICIT) and (utf8mb4_unicode_ci,IMPLICIT) for operation \'=\''查阅之后明白是book表中的排序规则不一样在命令行中输入ALTER TABLE books CONVERT
illegal key size org.apache.ws .security.components.crypto.Merlin cannot create instance
Undocumented_Secrets_of_MATLAB_Java_Programming.part2 Undocumented_Secrets_of_MATLAB_Java_... As far as I know, everything in this book is legal and within the bounds of the Matlab license agreement.
Undocumented_Secrets_of_MATLAB_Java_Programming.part3 Undocumented_Secrets_of_MATLAB_Java_... As far as I know, everything in this book is legal and within the bounds of the Matlab license agreement.
复制并覆盖%JAVA_HOME%/jre/lib/security下的local_policy.jar 和 US_export_policy.jar
爬虫禁区1:为违法违规组织提供爬虫相关服务(验证码识别服务贩卖、SEO……) 爬虫禁区2:个人隐私数据抓取与贩卖 爬虫禁区3:利用无版权的商业数据获利 爬虫禁区4:? CASE7:头疼大战前传:头条前高管反噬被判刑 ...
Mysql关联两张表时,产生错误提示Illegal mix of collations 1、先用工具把数据库、两张表的编码方式改变 2、这步很重要,需要改变字段的编码方式。 ALTER TABLE `表名` CHANGE `dev_chancode` `字段` VARCHAR(32) ...
今日遇到如下错误:java.security.InvalidKeyException: Illegal key size 因为美国法律限制,JAVA默认支持AES 128 Bit 的key, 如果你计划使用 192 Bit 或者 256 Bit key, java complier 会抛出 Illegal key size ...
At least once in every online description and with reasonable duration on the opening screen, your Variations must prominently identify (i) the names and email addresses of its creators, and (ii) the...
面向Linux平台的违规外联监控系统的主要架构和关键技术,郭峰,崔翔,为了保护涉密网络的安全,目前采取的主要措施是物理上的隔离。这种方法可以减少来自外部网络的安全威胁。然后,涉密网络内部同样
partI Writing (30 minute) <br>注意:此部分试题在答题卡1上。 <br>Directions:For this part ,you are allowed 30minute to write a short essay on the topic of students selecting their fectures....
对接微信接口中因为jdk8解密长度不够 报错 java.security.InvalidKeyException: Illegal key size 替换路径:(记得备份原有的文件) C:\Program Files\Java\jdk1.8.0_131\jre\lib\security