【无标题】

数据库生僻字处理

最近项目中客户录入地址时,有个𠙶(ou)字,导致信息录入报错,后台一看,不支持该字符集
记录一下处理方式

  1. 数据方面
    进入mysql的安装目录找到对应的端口下的my.cnf文件
    编辑my.cnf文件

vi my.cnf

在[client]标签下增加配置
default-character-set = utf8mb4
文件末尾增加如下配置

# 设置表字段排序规则
init_connect='SET collation_connection = utf8mb4_unicode_ci'
# set names utf8 是用于设置编码,可以再在建数据库的时候设置,也可以在创建表的时候设置,或只是对部分字段进行设置
init_connect='SET NAMES utf8mb4'
# 设置数据库编码
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 此处是忽略客户端的字符集,使用服务器的设置
skip-character-set-client-handshake
  1. 服务方面
    增加数据库连接配置
<property name="connectionInitSqls" value="set names utf8mb4;"/>

在这里插入图片描述
3. 数据方面
如果按上述配置后,还是无法保存生僻字。
检查该表所在库的字符集与排序规则,然后再检查表跟字段的字符集与排序规则
执行以下SQL可查看哪些字段字符集与排序规则不一致。最后将需要修改的字段copy出来执行即可

SELECT
  TABLE_SCHEMA '库名',
  TABLE_NAME '表名',
  COLUMN_NAME '字段',
  CHARACTER_SET_NAME '原字符集',
  COLLATION_NAME '原排序规则',
  CONCAT( 'ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' MODIFY COLUMN ', COLUMN_NAME, ' ', COLUMN_TYPE, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;' ) '修正SQL' 
FROM
  information_schema.`COLUMNS` 
WHERE
  TABLE_SCHEMA = '库名'  and  COLUMN_TYPE  NOT LIKE '%int%'; 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值