mysql5.5
mysql支持存储emoji在5.5.3版本以后支持
星期一, 五月 2nd, 2016 | JAVA-and-J2EE, linux | 没有评论
在做基于办公的沟通软件中,常用一些emoji的聊天版本,发现在mysql中无法存储.
因为emoji表情在存储时转成的四个字节(\xF0\x9F\x90\xAC);
由于数据库使用的是utf8字符集utf8_general_ci,这个校对规则(collation)最大只支持3个字节,所以四个字节的emoji就会存储不全,从而取出无法显示.
简要说明
上文提到的 utf8_general_ci 与 ut8_unicode_ci 是utf8的两种字符编码方式,不同之处就是对字符的分类(sorting)和对比(comparison)。
MySQL 5.5.3及以后版本支持使用utf8mb4字符集,它在与utf8数据格式处理性能相同基础上加强了对字符码位(code point)的处理能力。与utf8对应的,utf8mb4有 utf8mb4_general_ci 和 utf8mb4_general_ci 。
utf8mb4_general_ci 基于Unicode standard sorting与comparison,支持更多的语言种类。
utf8mb4_general_ci 不能解析所有的Unicode分类规则,在一些特别的语言或字符处理上存在一定的问题。不过在性能上,它能更快的sorting、comparison,因其采用一组性能相关的快捷方式(performance-related shortcuts)。
解决办法
通过上文我们已经知道一种解决办法了,但有一个硬性条件就是你的数据库版本。当你的数据库版本没有达到5.5.3怎么办呢…总结一下,mysql支持存储emoji表情的方法,至少有两种。
1.修改数据库编码为utf8mb4,前提是你的mysql数据库版本必须得是5.5.3及以后的
2.将带emoji的文本转为base64来进行存储,返回时进行相应解码返回
下面介绍我如何使用第一种方法:
将数据库编码由utf8改为utf8mb4
set character_set_client = utf8mb4; set character_set_connection = utf8mb4; set character_set_database = utf8mb4; set character_set_results = utf8mb4; set character_set_server = utf8mb4; |
将已经生成的表也转成utf8mb4
ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; |
小记:直接在这个层面上解决,省了在代码中转和处理方便很多.
MySQL表类型和存储引擎的修改遭遇版本不一致
星期五, 七月 25th, 2014 | Database, JAVA-and-J2EE | 没有评论
使用的是老版本的mysql客户端Navicate 8 ,mysql 服务端用的是mysql5.6的版本,在修改版本引擎的时候出现版本不对;
mysql error ‘TYPE=MyISAM’
解决办法:
Replace
TYPE=MyISAM
with
ENGINE=MyISAM
The problem was “TYPE=MyISAM” which should be “ENGINE=MyISAM” as per MySQL version updates – a simple search / replace has fix it.
附 修改表引擎sql:alter table db.user engine =MyISAM;
mysql的root密码丢失重置之ERROR 1045 (28000)
星期三, 十月 12th, 2011 | Database | 2 Comments
最新版的5.5.15的mysql在windows下安装到是蛮顺利(还支持至强cup不错不错),不过老是提示我root不对,在我登录的时候,另我十分崩溃,
在我重置了几次密码,依然无效的情况下,我崩溃了,准备换掉Windows系统,无意中打了系统的补丁,再卸载重新安装,居然好了,至今不知道是补丁的问题,还是重装的问题!
告诫下,下载再给windows装软件的时候最好更新下补丁包,省得出现此种怪事
命令行的一闪而过,可以cd到安装目录的bin下执行mysql
遭遇:ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)解决之道
1.以系统管理员身份登入windows系统。
2.如果mysql是启动的,先将它关闭。
3.打开命令视窗cmd。
如果在上一步骤,没有关闭mysql,可以用net start 查看mysql是否还在启动状态。在启动状态的话,就用net stop mysql的指令停止。
4.切换到mysql的安装路径的bin资料夹内,如果是预设路径,应该在的D:\MySQL\MySQL Server 5.5.15\bin之下。
5.执行mysqld –skip-grant-tables,这个指令用以启动mysql,但会跳过权限检查。
6.上个指令执行完后,命令视窗就停在mysql的运行状态,不能再输入指令了,所以要重新打开一个新的cmd命令视窗。
同样切换到mysql的安装路径的bin资料夹内,执行mysql
7.在mysql>的模式下,执行
update mysql.user set password=PASSWORD(‘123456′) where user=’root’;
flush privileges;
quit;
上面的步骤就可将忘记的密码重设。
8.回到dos命令模式,执行mysqladmin -u root -p shutdown,输入刚改过的密码123456。关掉目前mysql无权限的模式。
9.再正常启动mysql。
10.再输入 mysql -u root -p
就可以输入你的正确的密码了
Search
相关文章
热门文章
最新文章
文章分类
- ajax (10)
- algorithm-learn (3)
- Android (6)
- as (3)
- computer (85)
- Database (30)
- disucz (4)
- enterprise (1)
- erlang (2)
- flash (5)
- golang (3)
- html5 (18)
- ios (4)
- JAVA-and-J2EE (186)
- linux (143)
- mac (10)
- movie-music (11)
- pagemaker (36)
- php (50)
- spring-boot (2)
- Synology群晖 (2)
- Uncategorized (6)
- unity (1)
- webgame (15)
- wordpress (33)
- work-other (2)
- 低代码 (1)
- 体味生活 (40)
- 前端 (21)
- 大数据 (8)
- 游戏开发 (9)
- 爱上海 (19)
- 读书 (4)
- 软件 (3)