mac mysql utf8mb4_MacOS: 如何设置 MySQL 数据库采用 utf8mb4 字符集

本文介绍了在MacOS系统中如何将MySQL数据库设置为utf8mb4字符集,以支持emoji和解决编码问题。内容包括修改my.cnf文件、重启MySQL服务、更改数据库、表和列的字符集以及更新数据库连接代码等关键步骤。
摘要由CSDN通过智能技术生成

为了应对无线互联网的机遇和挑战、避免 emoji 表情符号带来的问题、

MySQL 数据库建议都提前采用 utf8mb4 字符集.

总结一下:

要完成修改,需要三个步骤来解决:

(1):修改mysql数据库的编码为uft8mb4 (第一部分)

(2):修改数据表的编码为utf8mb4 (第二部分)

(3):修改连接数据库的连接代码 (第三部分)

与linux系统不同,在 MacOS中 将 default-character-set 设置为 utf8mb4 还是有点tricky的。

/########################## 第一部分 ########################

网上搜到的答案一般都说修改 my.cnf 就可以了。 但是! 在 MacOS 里,你找不到mysql的 my.cnf 文件, 因为 macos里面 mysql 一开始就没有这么一个 my.cnf 文件。

那么我们怎么做呢?

在terminal里,输入:

mysql --help 或

mysql --help | grep cnf

可以看到这样的描述:

Default options are read from the following files in the given order:

/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

但是在 MacOS 里, 你根本找不到这些 .cnf 文件。那么我们首先要创造它们。

首先找到 my-default.cnf文件, 输入:

sudo find / -name my-default.cnf

(这一行的意思是,在 / 目录里找到 name 为 my-default.cnf的路径)

caoda1@CaoDas-MBP:~/Documents/news_robot$ sudo find / -name my-default.cnf

Password:

/usr/local/Cellar/mysql/5.7.11/support-files/my-default.cnf

然后将找到的文件拷贝到 /etc/:

sudo cp /usr/local/Cellar/mysql/5.7.11/support-files/my-default.cnf /etc/

然后在/etc/my-default.cnf里,修改/添加如下:

[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'

添加或修改完成后,保存退出,然后改文件名:

sudo mv /etc/my-default.cnf /etc/my.cnf

然后找到mysql安装在哪里,接着重启 MySQL:

caoda1@CaoDas-MBP:~/Documents/news_robot$ which mysql

/usr/local/bin/mysql

caoda1@CaoDas-MBP:~/Documents/news_robot$ sudo /usr/local/bin/mysql.server restart

Shutting down MySQL

..... SUCCESS!

Starting MySQL

. SUCCESS!

然后, 重启 MySQL Server、检查字符集

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

mysql> show variables like "character_set_database";

/########################## 第二部分 ########################

我省略了一步:(但是这一步很重要!!!!)

修改 database、table和column字符集

For each database:

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

For each table:

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

For each column:

ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

(Don’t blindly copy-paste this! The exact statement depends on the column type, maximum length, and other properties. The above line is

just an example for a VARCHAR column.)

这就是说 你创建的 database,table, column 也要改成 utf8mb4; 我是直接删了所有以前的东西,然后从零开始创建,所以省略了这一步。结果失败了。

/########################## 第三部分 ########################

还要在code里面改一下数据库的链接代码(注意:charset=utf8mb4):

mysql://root:@127.0.0.1:3306/weibo?charset=utf8mb4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值