多少版本的mysql支持表情符号

多少版本的mysql支持表情符号,第1张

MySQL 需要支持 emoji 表情符号版本需要大于5.5.3,且字符集需要设置为utf8mb4 字符集。

utf8mb4和utf8到底有什么区别呢?原来以往的mysql的utf8一个字符最多3字节,而utf8mb4则扩展到一个字符最多能有4字节,所以能支持更多的字符集。

将Mysql的编码从utf8转换成utf8mb4。

需要 >= MySQL 5.5.3版本、从库也必须是5.5的了、低版本不支持这个字符集、复制报错

停止MySQL Server服务

修改 my.cnf或者mysql.ini

?1234567891011 [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4'

重启 MySQL Server、检查字符集。

查看服务器字符集设置

?1 mysql>SHOW VARIABLES WHERE Variable_name LIKE 'character%' OR Variable_name LIKE 'collation%'

?1234567891011121314 +--------------------------+--------------------+ | Variable_name | Value | +--------------------------+--------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8| | collation_connection | utf8mb4_unicode_ci | | collation_database| utf8mb4_unicode_ci | | collation_server | utf8mb4_unicode_ci | +--------------------------+--------------------+

查看数据库字符集

?1 mysql>select * from SCHEMATA where SCHEMA_NAME='ttlsa'

?12345 +--------------+-------------+----------------------------+------------------------+----------+ | CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH | +--------------+-------------+----------------------------+------------------------+----------+ | def | ttlsa | utf8mb4 | utf8mb4_unicode_ci | NULL | +--------------+-------------+----------------------------+------------------------+----------+

查看表字符集

?1 mysql>select TABLE_SCHEMA,TABLE_NAME,TABLE_COLLATION from information_schema.TABLES

?123 +--------------------+----------------------------------------------------+--------------------+ | TABLE_SCHEMA| TABLE_NAME | TABLE_COLLATION | +--------------------+----------------------------------------------------+--------------------+

查看列字符集

?1 mysql>select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,COLLATION_NAME from COLUMNS

?123 +--------------------+----------------------------------------------------+--------------------------------------------+--------------------+ | TABLE_SCHEMA| TABLE_NAME | COLUMN_NAME| COLLATION_NAME | +--------------------+----------------------------------------------------+--------------------------------------------+--------------------+

转换字符集语句

?123456789 use information_schemaSELECT concat("ALTER DATABASE `",table_schema,"` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci") as _sql FROM `TABLES` where table_schema like "DB_NAME" group by table_schemaSELECT concat("ALTER TABLE `",table_schema,"`.`",table_name,"` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci") as _sql FROM `TABLES` where table_schema like "DB_NAME" group by table_schema, table_nameSELECT concat("ALTER TABLE `",table_schema,"`.`",table_name, "` CHANGE `",column_name,"` `",column_name,"` ",data_type,"(",character_maximum_length,") CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci") as _sql FROM `COLUMNS` where table_schema like "DB_NAME" and data_type in ('varchar')SELECT concat("ALTER TABLE `",table_schema,"`.`",table_name, "` CHANGE `",column_name,"` `",column_name,"` ",data_type," CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci") as _sql FROM `COLUMNS` where table_schema like "DB_NAME" and data_type in ('text','tinytext','mediumtext'

mysql

5.5.3

开始,mysql

支持一种

utf8mb4

的字符集,这个字符集能够支持

4

字节的

utf8

编码的字符。

utf8mb4

字符集能够完美地向下兼容

utf8

字符串。在数据存储方面,当一个普通中文字符存入数据库时仍然占用

3

个字节,在存入一个

unified

emoji

表情的时候,它会自动占用

4

个字节。所以在输入输出时都不会存在乱码的问题了。由于

utf8mb4

utf8

的超集,从

utf8

升级到

utf8mb4

不会有任何问题,直接升级即可;如果从别的字符集如

gb2312

或者

gbk

转化而来,一定要先备份数据库。然后,修改

mysql

的配置文件

/etc/my.cnf,修改连接默认字符集为

utf8mb4

,然后在连接数据库以后首先执行一句

sql:

set

names

utf8mb4。

1.

修改my.cnf

my.ini

[mysqld]

character-set-server=utf8mb4

[mysql]

default-character-set=utf8mb4

修改后重启mysql

登陆mysql,

show

variables

like

'character%'

可以查看编码是否已经修改成功。

2、修改数据库和数据表为相应的

utf8mb4

格式。

alter

table

table_name

convert

to

character

set

utf8mb4

collate

utf8mb4_bin

3、在代码中,连接数据库成功后,执行

"set

names

utf8mb4"

1、桌面上右击 计算机,选择“管理”, 选择“服务和应用程序”---“服务”, 在里面找到MySQL56的服务。

2、右击 MySQL服务,查看“属性”:往后拖一下,找到—default-file下图中画框部分,这里指明了MySQL启动的时候要加载的配置文件.

3、 找到该路径下的配置文件,进行修改。

4、 具体修改内容:

文字:

[client]

port=3306

default-character-set=utf8mb4

[mysql]

port=3306

default-character-set=utf8mb4

[mysqld]

port=3306

character-set-client-handshake= FALSE

character-set-server= utf8mb4

collation-server= utf8mb4_unicode_ci

init_connect='SET NAMES utf8mb4'

5、 然后重启MySQL56服务。

6、 在运行里面,找到并打开mysql command line,使用以下命令查看是否生效。

SHOWVARIABLES WHERE Variable_name LIKE 'character/_set/_%' OR Variable_name LIKE'collation%'

看到下面这个画面就说明生效了:

7、以为这样就完了吗?No,即使是这样我们无论是在mysql workbench还是通过python+mysqldb建立的utf8mb4数据库其实还是utf-8的,也正因如此,我们的emoj字符才一直不能插入到数据库中。

即使建立的数据库是utf8mb4的,我们看到这个数据库还是utf8的。

所以我们还需要继续实验,仔细看修改配置文件里面有一句:init_connect='SETNAMES utf8mb4',那我可以拿来用到数据库中。

果然,发现加上“SET NAMES utf8mb4”这句以后,数据库变成了utf8mb4.:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8576358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存