关于mysql查询字符集不匹配问题的解决方法

发现问题

最近在工作中遇到一个问题,MySQL数据库建表的时候采用的是latin的字符集,而网页中查询的是utf-8,当输入页面输入中文,然后再数据库中查询的时候,就会报出 ER_CANT_AGGREGATE_2COLLATIONS: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' 这个错误,所以在stackover flow 中找到了对这个数据库,以及数据表中进行更改字符集的方法。

SET collation_connection = 'utf8_general_ci' 

注意:要替换下面两句中替换成你的数据库名称和你的数据表名称

ALTER DATABASE your_database_name CHARACTER SET utf8 COLLATE utf8_general_ci 

ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci 

这样就保证了数据库也为utf-8的字符集了,就不会在用中文输入时候,查询数据库中的内容产生错误了。

reference:Illegal mix of collations MySQL Error

在PHP中设置数据库的字符集为utf-8

mysqli_set_charset($dbc,'utf8'); 

在html中添加显示utf-8的meta就可以了

<meta charset="utf-8"> 

总结

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • 关于mysql查询字符集不匹配问题的解决方法

    发现问题 最近在工作中遇到一个问题,MySQL数据库建表的时候采用的是latin的字符集,而网页中查询的是utf-8,当输入页面输入中文,然后再数据库中查询的时候,就会报出 ER_CANT_AGGREGATE_2COLLATIONS: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' 这个错误,所以在stackover flow 中找到了

  • php查询mysql大量数据造成内存不足的解决方法

    本文实例分析了php查询mysql大量数据造成内存不足的解决方法.分享给大家供大家参考.具体分析如下: 一.问题 使用php查询mysql大数据量的时候,程序尚未执行完毕,跳出警告: Fatal error:  Allowed memory size of 100663296 bytes exhausted (tried to allocate 103 bytes) 错误提示:php所分配到的100M内存被占用完毕. 二.解决方法: 最简单的解决办法是:在执行文件的头部增加: ini_set('

  • MySQL查询结果复制到新表的方法(更新、插入)

    MySQL中可以将查询结果复制到另外的一张表中,复制的话通常有两种情况,一种是更新已有的数据,另一种是插入一条新记录.下面通过例子来说明.首先构建两个测试表. 表t1: 表t2: 1.如果t2表中存在score值,将score更新到t1表中.方法如下: UPDATE t1,t2 SET t1.score = t2.score WHERE t1.id = t2.id AND t2.score IS NOT NULL 这就是将查询结果作为条件更新另一张表,当然,t2也可以是更为复杂的一个查询结果而不

  • C3P0连接池+MySQL的配置及wait_timeout问题的解决方法

     一.配置环境 spring4.2.4+mybatis3.2.8+c3p0-0.9.1.2+Mysql5.6.24 二.c3p0的配置详解及spring+c3p0配置 1.配置详解 官方文档 : http://www.mchange.com/projects/c3p0/index.html <c3p0-config> < default-config> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数.Default: 3 --> <property

  • 解压版MYSQL安装及遇到的错误及解决方法

    1 安装 在 MYSQL官网进行下载相应的解压版本,然后放在你所想的目录下. 解压内容如下: 然后我们需要去创建一个名为my.ini文件,注意文件后缀一定要是.ini结尾,如果文件后缀隐藏了,可以将其勾选上,如图: 创建文件:my.ini. 其内容如下: [client] port=3306 default-character-set=utf8 [mysqld] # 设置为自己MYSQL的安装目录 basedir=D:\Program Files\mysql-5.7.24-winx64 # 设置

  • MySql 修改密码后的错误快速解决方法

    设置好密码后,使用数据库时出现如下错误: ERROR 1820 (HY000): You must reset your password using ALTER USER statement befo re executing this statement. You must SET PASSWORD before executing this statement的解决方法 今天在MySql5.6操作时报错:You must SET PASSWORD before executing this

  • mysql安装时出现各种常见问题的解决方法

    小编为大家整理许多mysql安装时出现各种常见问题的解决方法,供大家参考,具体内容如下 问题一: 当各位在安装.重装时出现could not start the service mysql error:0 原因: 卸载mysql时并没有完全删除相关文件和服务,需要手动清除. 安装到最后一步execute时不能启动服务的解决方法: 首先,在管理工具->服务里面将MySQL的服务给停止(有的是没有安装成功,有这个服务,但是已经停止了的),win+R->cmd,打开命令提示符窗口,输入命令:sc d

  • MySQL无法存储Emoji表情问题的解决方法分析

    本文实例讲述了MySQL无法存储Emoji表情问题的解决方法.分享给大家供大家参考,具体如下: 数据插入的时候报错: 1366 - Incorrect string value: '\xF0\x9F\x98\x81' for column 'job' at row 23 解决办法: 1.修改配置文件my.ini[D:\Program Files\MySQL\MySQL Server 5.5]: [mysql] default-character-set=utf8mb4 [mysqld] char

  • 详解MySQL主键唯一键重复插入解决方法

    目录 解决方案: 1. IGNORE 2. REPLACE 3. ON DUPLICATE KEY UPDATE 我们插入数据的时候,有可能碰到重复数据插入的问题,但是这些数据又是不被允许有重复值: CREATE TABLE stuInfo ( id INT NOT NULL COMMENT '序号', name VARCHAR(20) NOT NULL DEFAULT '' COMMENT '姓名', age INT NOT NULL DEFAULT 0 COMMENT '年龄', PRIMA

  • Mysql报Table 'mysql.user' doesn't exist问题的解决方法

    目录 发现问题 问题起源: 排查记录: 总结 发现问题 前天突然出现了这个问题,花费了很多时间去解决问题.记录一下,希望能给大家避坑 问题起源: 周六,windows本地的mysql还能正常使用,周日早上,使用navicat连接本地mysql,一直报连接拒绝. 排查记录: 1 首先博主,去查看了一下本地Mysql服务是否启动,经过查看发现Mysql服务关闭,且无法启动. 2 因需要先确定Mysql服务无法启动的原因, 所以,去查看了一下系统的日志. 3 确定了问题,是因为Mysql自身报错,信息

随机推荐