关于MySQL修改成utf8mb4编码后启动服务报错1067的解决方法

本文介绍如何正确配置MySQL以使用utf8mb4字符集。通过在my.ini文件中特定位置添加设置,避免服务启动失败的问题。适用于需要全面支持Unicode字符的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


关于怎么设置utf8mb4可以看这篇文章 :  MySQL设置字符集utf8mb4

主要设置就是在my.ini或者my.cnf

但是坑就在这里,你会发现在[mysqld]下面加上4句话后,无法启动mysql服务,也许你会想是不是你哪里打错字了,不是的;
只要把[mysqld]下面的4句话放在my.ini配置文件的最下面底部就可以启动服务了,原因不知道为什么,反则我搞了一个下午都是启动失败,第二天早上突发奇想,把设置放在最下面就成功了

设置如下

[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 字符编码配置 当遇到错误 `1366 Incorrect string value: '\xCE\xDE' for column 'subGrps'` 时,这通常是因为数据库或表使用的字符集无法处理某些特殊字符。为了确保能够正确存储这些字符,建议将字符集更改为 `utf8mb4`。 #### 修改数据库和表的字符集 要解决这个问题,可以按照以下方式修改数据库和表的字符集: ```sql ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 对于特定表格,执行如下命令来更改其字符集: ```sql ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 如果只想改变某一列的数据类型及其对应的排序规则,则可使用下面这条语句: ```sql ALTER TABLE table_name MODIFY COLUMN column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 以上操作会把整个库、指定表以及单个字段都转换支持四字节 UTF-8 编码(`utf8mb4`) 的形式[^2]。 #### 处理 CSV 文件中的数据 在导入 CSV 文件之前,还需要确认该文件本身也采用了正确的编码格式。可以通过文本编辑器或其他工具检查并调整源文件的编码为 UTF-8 或者直接保存为带有 BOM (Byte Order Mark) 的 UTF-8 格式。 另外,在加载 CSV 数据到 MySQL 表格的过程中,应该指明输入流所采用的具体编码标准。例如通过 LOAD DATA INFILE 命令时加上选项 `CHARACTER SET utf8mb4` 来告知服务器如何解析传入的数据: ```sql LOAD DATA LOCAL INFILE '/path/to/yourfile.csv' INTO TABLE your_table FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES (column_list) SET some_column = NULLIF(some_column, ''), another_column = NULLIF(another_column, '') CHARACTER SET utf8mb4; ``` 这样就可以有效地防止由于字符编码不匹配而引发的各种异常情况了[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值