总结:

错误是在你的结果集中有两种字符集。

比如说你在两个表联合查询,一个表的字符集是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后执行这个语句就可以了:
复制SQL代码保存代码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.xrss.cn/Dev/DataBase/200792116686.Html

转载于:https://www.cnblogs.com/csj007523/archive/2008/03/20/1115503.html

Mysql中给数据库,表,字段设置字符编码相关推荐

  1. 将mysql中的数据库表导出和导入

    目录 导出数据库 导入数据库 导出数据库 如果你的mysql没有配置环境变量,首先需要进到你所安装的mysql目录下的bin目录 进入之后输入: mysqldump -uroot -p booksys ...

  2. 使用mybatis操作MySQL中的数据库表1---读取数据

    1)MySQL中创建表 create table student ( id int(11) not null, name varchar(255) default null, email varcha ...

  3. mysql数据库表类型设置_mysql数据库表的类型介绍

    目录 前言 之前我们讲了下载安装数据库,还有如何卸载(虽然直接重装系统就好) 那么现在让我们来讲讲 """ 1.数据库与表的剩余操作 编码配置.引擎介绍 2.数据库字段的 ...

  4. 记MySQL中如何删除某个字段中的某个字符

    问题描述: 问题:项目中对以逗号分隔的字符串进行指定字符修改删除时,会导致其它字符无法使用. 原因分析: SQL语句拼写错误.遗漏replace()中的第三个参数,漏写了,. 错误的写法: updat ...

  5. 把Excel表格通过MySql Workbench导入数据库表中的使用总结

    把Excel表格通过MySql Workbench导入数据库表中的使用总结 今天接到一个任务,把excel表中的数据导入到mysql数据库中,通过半个多小时的鼓捣,基本上摸清了里面的门道. 首先,准备 ...

  6. mysql check 字段 0_怎么用PHP显示出mysql中 pwn_dingcan_order这个表中 ifcheck 这个字段为0 的这条数据呢。...

    怎么用PHP显示出mysql中pwn_dingcan_order这个表中ifcheck这个字段为0的这条数据呢.这样是显示出全部订单的语句.这么才能只显示这个ifcheck=0的这一条数据呢.< ...

  7. mysql默认字符编码设置教程:my.ini设置字符编码

    转载2016-06-07 21:49:26 标签:mysql 本文介绍了MySQL数据库中默认字符编码的设置方法,如何设置与修改mysql默认编码,my.ini设置字符编码的教程,需要的朋友参考下. ...

  8. Oracle/MSSQL/Mysql 常用数据库的字段类型及大小

    Oracle/MSSQL/Mysql 常用数据库的字段类型及大小 ORACLE的数据类型 常用的数据库字段类型如下:   字段类型   中文说明   限制条件   其它说明   CHAR  固定长度字 ...

  9. MySql中把一个表的数据插入到另一个表中的实现代码--转

    MySql中把一个表的数据插入到另一个表中的实现代码 司的一个项目,做报表--要关联的表结构比较多,最后决定把要用的数据集合到一张新表中,需要用到以下的sql语法......分享下: web开发中,我 ...

  10. mysql中创建数据表

    从今天开始学习mysql数据库,希望以后能够记录自己学习的点点滴滴 mysql中创建数据表 1.创建一个数据库为test_db mysql> create database test_db; Q ...

最新文章

  1. 钱学森最后一次系统谈话:大学要有创新精神
  2. 传统网站性能优化的三种手段
  3. JavaWeb开发概述
  4. 机器学习知识点(三十五)蒙特卡罗方法
  5. vs html自动对齐,vscode esLint 保存时 自动对齐
  6. 22. loacte命令
  7. Nginx的http块MIME-Type的使用
  8. MyEclipse web项目导入Eclipse,详细说明
  9. sql中有一些保留字,当你的字段名是它的保留字时,这个时候sql语句的字段不加``就会报错...
  10. SQL数据库查询基础(主讲MySQL,必要时补充了SQLServer、Access兼容性说明)
  11. Golang并发模式--管线
  12. 利用jieba进行中文分词并进行词频统计
  13. MOSSE相关滤波目标跟踪论文
  14. JavaScript中sort()对数组数字项函数function(a,b)返回值为a-b即为升序排列的细解
  15. JAVA 小易爱回文
  16. 服装办理erp体系的优点与选择
  17. java 判断图片否旋转,Java实现图片任意角度旋转
  18. 抖音复制微信号跳转微信的链接怎么生成的?
  19. dell中小企业商用台式机Vostro4667 win10家庭中文版重装成win7版
  20. 酷炫音画互动,编程无所不能| Jason Hou 在西瓜上海年会上的演出

热门文章

  1. KNN (K近邻算法) - 识别手写数字
  2. mysql基础之mariadb集群主从架构
  3. 对unidbgrid的单元格操作
  4. Java并发编程学习笔记(二)——对象的共享
  5. [jQuery] form提交到iframe之后,获取iframe里面内容
  6. 【笔记】定积分的近似计算
  7. 在窗体创建时显示窗体
  8. iOS Xcode Implicit declaration of function 'callbackBlock' is invalid in C99
  9. AngularJs自定义指令详解(10) - 执行次序
  10. CENTOS6.8 修改主机名