错误是在你的结果集中有两种字符集。
比如说你在两个表联合查询,一个表的字符集是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 即可。
分享到:
相关推荐
在MySQL数据库中,字符编码(Character Set)和排序规则(Collation)对于存储和处理包含多种语言或特殊字符的数据至关重要。编码方式决定了数据如何被存储和解析,而排序规则则影响到数据的比较和排序。当数据库、...
本教程将指导您在MySQL中创建数据库和表,首先需要安装和配置MySQL数据库。 1. MySQL的安装和配置 在安装MySQL之前,需要下载MySQL安装文件,例如mysql-5.5.12-win32.msi。运行该程序可以进行MySQL安装。在安装...
UTF-8是一种广泛使用的多字节字符编码,支持全球大部分语言,包括中文,因此推荐将其作为数据库的默认字符集。 首先,创建数据库时应指定UTF-8字符集。在MySQL中,可以使用以下命令创建一个名为`my_db`的数据库,并...
全国省份城市数据库表是用于存储中国各个省份及下属城市的详细信息的数据结构,通常在MySQL这样的关系型数据库管理系统中实现。这个数据库表对于构建地理信息系统、物流管理、人口统计分析等应用非常有用。在这个...
6. **字符编码设置**:描述中提到的“可设字符编码”是SQLyog的重要特性之一。用户可以根据需求设定数据库、表或字段的字符编码,支持多种字符集,如UTF-8、GBK等,确保跨语言数据的正确存储和显示。 7. **备份与...
这主要涉及到字符编码的兼容性和设置问题,尤其是在使用MySQL数据库与不同编程语言(如Java、JSP)进行交互时更为突出。以下是对如何解决连接MySQL时中文显示乱码问题的详细解析。 ### 解决中文显示乱码的关键知识...
mysql将表的字符编码转换成utf-8 代码如下:alter table tb_anniversary convert to character set utf8; 修改数据库mysql字符编码为UTF8 步骤1:查看当前的字符编码方法 代码如下:mysql> show variables like’...
在Java Web开发过程中,MySQL数据库中的中文编码问题是非常常见的技术难题之一。如果处理不当,可能会导致中文显示乱码、数据插入失败等问题。本文将深入探讨MySQL中文编码的相关设置,并提供一种有效的解决方案。 ...
在IT行业中,数据库连接、表名获取以及字段名获取是常见的任务,特别是在开发数据库驱动的应用程序时。这里,我们关注的是使用C#编程语言在Visual Studio 2005环境下实现这一目标。"DBACESS"这个文件可能是实现这一...
总之,要确保MySQL数据库能正确处理中文,关键在于正确配置服务器、数据库、表以及字段的字符集,并确保所有交互环节都支持UTF-8编码。通过遵循这些步骤,初学者可以避免中文乱码问题,顺利进行数据库操作。
2. **数据库表的字符集设置**:如果MySQL数据库中的表字符集不是统一的UTF-8,那么在查询时就可能出现乱码现象。 3. **连接参数配置不当**:在使用MyDAC组件建立数据库连接时,如果没有正确设置字符集参数,也可能...
在MySQL数据库中处理中文字符是常见的需求,尤其是在中文网站、应用程序和数据分析项目中。要确保中文字符能够正确存储和显示,需要关注几个关键点:字符集设置、数据库表结构、连接参数以及数据插入方法。以下将...
在MySQL中,这些字段可能被组织在一个或多个表中,表结构设计合理,以便高效查询。例如,可以创建一个名为`hanzi`的表,包含上述字段,并对`汉字`字段设置为主键,确保数据的唯一性。如果需要进一步优化,可以考虑对...
MySQL字符集设置是数据库管理中的一个重要环节,尤其是在处理多语言数据或者有特殊字符需求的应用中。字符集决定了数据库、表以及字段如何存储和显示字符,影响到数据的正确性及兼容性。以下将详细讲解MySQL字符集的...
本文将基于提供的标题、描述、标签以及部分内容,详细解析如何通过SQL命令在MySQL数据库中根据字段名查找所在表。 ### 一、问题背景与需求分析 在数据库维护或开发过程中,经常需要了解某个字段存在于哪个表中。...
在使用MySQL数据库处理中文数据时,正确的配置和设置至关重要,这不仅能确保中文字符的正确存储,还能保证在查询和显示时不会出现乱码等问题。下面将详细介绍如何在MySQL数据库中正确地处理中文字符。 #### 1. 安装...
### MySQL内存数据库详解 在探讨MySQL的内存数据库...`以设置正确的字符编码。 综上所述,MySQL的内存数据库功能及其基本操作为用户提供了强大且灵活的数据管理和查询能力,尤其适合那些对性能有极高要求的应用场景。