这阵子忙着把数据库从MS SQL数据库改成MySQL数据库,简直过着非人的生活!
再怎么忙,还是想做做笔记,绝不允许自己把一个错误重犯二次。OK,言归正传。。。
SQL:
SELECT faqname, faqparent, phrase.text AS title
FROM faq AS faq
INNER JOIN phrase AS phrase ON
(phrase.phrasetypeid = 7000 AND phrase.varname = faq.faqname)
WHERE phrase.languageid IN(-1, 0, 1)
AND (
faqparent IN('vb_custom_status', 'vb_update_profile',
'vb_calendar_how', 'vb_referrals_explain',
'vb_sig_explain', 'vb_user_maintain')
OR
faqname IN('vb_custom_status', 'vb_update_profile',
'vb_calendar_how', 'vb_referrals_explain',
'vb_sig_explain', 'vb_user_maintain')
)

mysql 错误: Illegal mix of collations (latin1_bin,IMPLICIT) and (latin1_swedish_
ci,IMPLICIT) for operation '='

mysql 错误号: 1267

从我自己的cnblogs(http://www.cnblogs.com/xugang/articles/882943.html)中看了看错误提示:)
1267:不合法的混合字符集。

总结:
错误是在你的结果集中有两种字符集。
比如说你在两个表联合查询,一个表的字符集是latin1,另一个是utf8,
这样在你的结果集中有两种字符集,mysql会报上面的错误。
一个表中不同的字段使用不同的字符集,也是一个道理。
用SHOW CREATE TABLE table_name;可以看出具体的字符集设置。

查了帮助手册,说是user的字符集没有设,默认为utf8,将其转为latin1或gb2312等字符集

解决方法:
将不同的字符集,转化成统一的字符集。

After an upgrade to MySQL 4.1, the statement fails:

mysql> SELECT SUBSTRING_INDEX(USER(),'@',1);
ERROR 1267 (HY000): Illegal mix of collations
(utf8_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE)
for operation 'substr_index'

The reason this occurs is that usernames are stored using UTF8 (see section 11.6 UTF8 for Metadata). As a result, the USER() function and the literal string '@' have different character sets (and thus different collations):

mysql> SELECT COLLATION(USER()), COLLATION('@');
+-------------------+-------------------+
| COLLATION(USER()) | COLLATION('@') |
+-------------------+-------------------+
| utf8_general_ci | latin1_swedish_ci |
+-------------------+-------------------+

One way to deal with this is to tell MySQL to interpret the literal string as utf8:

mysql> SELECT SUBSTRING_INDEX(USER(),_utf8'@',1);
+------------------------------------+
| SUBSTRING_INDEX(USER(),_utf8'@',1) |
+------------------------------------+
| root |
+------------------------------------+

Another way is to change the connection character set and collation to utf8. You can do that with SET NAMES 'utf8' or by setting the character_set_connection and collation_connection system variables directly.

表的编码转换可以用:(MySQL Version > 4.12)
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;

之前的版本可以用:
ALTER TABLE tbl_name CHARACTER SET charset_name;

MySQL官方解释:
http://dev.mysql.com/doc/refman/5.0/en/charset-collation-charset.html

附加:

修改字段类型的方法:(经过 google 搜索)
登录MYSQL后执行这个语句就可以了:
ALTER TABLE `phrase` CHANGE `varname` `varname` VARCHAR( 250 ) NOT NULL;

修改字段字符集的方法:
mysql〉show full columns from table就會發現兩個字段的字符集是不一樣的。
通過用
ALTER TABLE `tname` CHANGE `column` `column` VARCHAR( 15 ) CHARACTER SET latin1 NOT NULL。
(假設變更為字符型,並且字符集類別為latin1 latin1 )

修改.ini文件的方法:(不建议使用)
在mysql 的安装目录下有一个my.ini文件,
打开找到[mysql]下的default-character-set=*****,改成default-character-set=gb2312,重启mysql 即可。

本文转自钢钢博客园博客,原文链接:http://www.cnblogs.com/xugang/archive/2007/09/06/884628.html,如需转载请自行联系原作者

MySQL字符集不一致的解决办法总结相关推荐

  1. navicat for mysql 显示中文乱码解决办法

    navicat for mysql 显示中文乱码解决办法   最近遇到一个问题,用navicat for mysql 打开数据库时全都显示的是乱码(在用程序代码插入数据之前确保字符不是乱码),遇到问题 ...

  2. php 返回英文乱码,使用php 5时MySQL返回乱码的解决办法_php

    在使用 php 5 中,通过 mysql 查询得到的值全部成为 '???????',原来是字符集设错了. 我在安装 MySQL 5 时,已经选择默认字符集为 gb2312,但还是返回乱码,解决的办法是 ...

  3. MySQL 字符集不一致导致索引失效的一个真实案例

    文章目录 问题描述 问题分析 总结 大家好,我是只谈技术不剪发的 Tony 老师.今天给大家分析一个由于 MySQL 字符集不一致导致索引失效的案例. 问题描述 有个朋友给我发来一个问题,说是他们的系 ...

  4. iis 无法连接mysql_远程无法连接SQL2000及MySQL的原因和解决办法

    远程无法连接SQL2000及MySQL的原因和解决办法 时间:2019-11-10 11:06 1. 没有在数据库管理面板中设置远程连接IP造成的. 说明:为了提高操作系统的安全性,所有使用了星外安全 ...

  5. matlab中plot同时绘制两个函数时向量长度不一致的解决办法

    在同一张图上绘制函数及其导数的图形的时候遇到的问题:求导数需要diff函数,众所周知,diff函数计算的是差值,出来的向量比原向量维数少1,导致用一个plot绘制的时候会报错 matlab中绘图时遇到 ...

  6. mysql1577_使用Navicat for MySQL的1577错误解决办法

    使用Navicat for MySQL的1577错误解决办法,使用Navicat for MySQL转储数据库的时候被提示:1577 – Cannot proceed because system t ...

  7. Mysql错误1366的解决办法:Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1

    Mysql错误1366的解决办法:Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1 原因是UTF-8编码有可能是两个.三个 ...

  8. mysql linux root密码忘记了怎么办,linux下忘记mysql的root密码解决办法 | 严佳冬

    下面就记录一下在linux下忘记mysql的root密码解决办法: 1.vim /etc/my.cnf    #编辑文件,找到[mysqld],在下面添加一行skip-grant-tables [my ...

  9. 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法...

    -----转载:http://blog.csdn.net/sgear/article/details/7663502 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格 ...

最新文章

  1. 解决maven下载jar慢的问题(如何更换Maven下载源)
  2. mysql快速批量入库_MySQL-批量入库优化
  3. teleport 组件的作用_承德专业做链轮组件哪家好
  4. Spark 2.1.0集成CarbonData 1.1.0
  5. python 反爬机制_python3爬虫--反爬虫应对机制
  6. 随想录(smp的一些注意事项)
  7. Spring 三种bean装配的方式
  8. 关于unity如何制作mmo
  9. c语言什么类型的编程,编程有哪些数据类型?
  10. Php程序监控邮件提醒linux,Linux ping命令实现网络监控 并邮件提醒管理员
  11. 为张孝祥老师的离世表示哀悼
  12. ubuntu pci wifi bcm4322 无法使用 解决方法
  13. c++二维数组定义与初始化
  14. Python2.X无换行无空格输出
  15. 抽奖随机滚动_仅需2分钟,使用excel制作一个抽奖小工具,再也不用为抽奖发愁了...
  16. 一个 Android MVVM 组件化架构框架
  17. 重新系统(win11)以后,西部硬盘(机械硬盘)识别不了
  18. matlab :检测文档图片中的字母l
  19. python安装库备忘
  20. 关于数据清理,你必须知道这些!

热门文章

  1. leetcode 5.最长回文子串
  2. java HttpURLConnection类的disconnect方法与http长连接
  3. jenkins插件下载地址
  4. 距离全球边缘计算大会还有1400小时!
  5. 美网站评10大经典愚人节办公室恶作剧
  6. Smooze for Mac(鼠标增强辅助软件)
  7. android-设置屏幕壁纸
  8. ndk-build 添加window环境变量
  9. 独立看门狗(IWDG)
  10. 文竹越长越乱?教你7种修剪方法可保持文竹株形优美,矮壮浓密