关于 MySQL UTF8 编码下生僻字符插入失败/假死问题的分析
1、问题:mysql 遇到某些中文插入异常
最近有同学反馈了这样一个问题:
上述语句在脚本中 load 入库的时候会 hang 住,web 前端、命令行操作则要么抛出
Incorrect string value: '\xF0\xA1\x8B\xBE\xE5\xA2...' for column 'name',
要么存入MYSQL数据库的内容会被截断或者乱码,而换做其它的中文则一切正常。
嗯,看起来有点奇怪哈,按理说 utf8 编码是覆盖了所有中文的,不应该出现上述问题。
2、原因:此 utf8 非彼 utf8
那我们先来看看插入异常的中文和正常的中文有啥区别:
可以看到上面插入异常的文字占了 4 个字节,而我们插入正常的则只占了 3 个字节。但是 utf8 字符编码不就是可变长,支持 1-4 字节的么?会和这个有关?
嗯,看看官方文档就知道了:
10.1.10.6 The utf8mb4 Character
原Mysql 官方Memcached 插件安装与使用
Mysql 官方Memcached 插件使用体验
Mysql官方发布过一个Memcached 的插件。以前,曾经也有MemcacheDB 做过相同的事情,不过似乎它现在没啥声音了,而非官方、非Memcached 协议的HandlerSocket 最近反响挺强烈的。这些都有一个共同点:基于Mysql 的storage engine,然后在其上构建一层自有API。 …
再议数据库军规
上一篇《58到家数据库30条军规解读》引发了广泛的讨论,某些军规部分同学有疑惑,补充一文说明。
军规:必须使用UTF8字符集
和DBA负责人确认后,纠正为“新库默认使用utf8mb4字符集”。
这点感谢网友的提醒,utf8mb4是utf8的超集,emoji表情以及部分不常见汉字在utf8下会表现为乱码,故需要升级至utf8mb4。
默认使用这个字符集的原因是:“标准,万国码,无需转码,无乱码风险”,并不“节省空间”。…
高并发大数据业务数据库设计军规解读
转自:58到家
军规适用场景:并发量大、数据量大的互联网业务
军规:介绍内容
解读:讲解原因,解读比军规更重要…
MySQL中InnoDB的Memcached插件的使用教程
这篇文章主要介绍了MySQL中InnoDB的Memcached插件的使用教程,借助MySQL本身的复制功能,我们可以说变相地实现Memcached的复制需要的朋友可以参考下…
在 ubuntu16.04上安装 Nginx,PHP7,Mysql5.7
Nginx安装参考:
http://nginx.org/en/linux_packages.html#distributions
PHP安装:
sudo apt-get install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get install -y php7.2
sudo apt-get install php7.2-mysql php7.2-curl php7.2-json php7.2-cgi php7.2-xsl
Mysql安装参考:
http://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#repo-qg-apt-select-series
nginx mysql也适用于centos 等。
…
原CentOS 上 mysql 5.5 升级到 mysql 5.7 小结
原centos7下yum安装mysql 5.5 5.6 5.7
CentOS 7的yum源中貌似没有正常安装mysql时的mysql-sever文件,需要去官网上下载
# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-community-server
|
默认安装的是 mysql5.6的,如果要安装 mysql 5.5 或mysql 5.7 需要修改 /etc/yum.repos.d/mysql-community.repo 里把 5.5或5.7开启 把 5.6禁用
成功安装之后重启mysql服务
# service mysqld restart
|
初次安装mysql是root账户是没有密码的
设置密码的方法
# mysql -uroot
mysql> set |
近期评论