mysql 80004005_解决mysql报错误 0x80004005 Incorrect string value: '\xF0\xA0\x83\x8A2\xE4...' for column...

最近遇到一个mysql生产问题,一直报:报错误 0x80004005  Incorrect string value: '\xF0\xA0\x83\x8A2\xE4...' for column

经过排查原来数据库和表都是默认utf8编码,老司机都知道,mysql中的utf8编码有一个大坑,不是真正的utf8。当遇到特殊字符就会插入失败报下面的错误:

MySql.Data.MySqlClient.MySqlException (0x80004005): Incorrect string value: '\xF0\xA0\x83\x8A2\xE4...' for column

使用环境:

1、asp.net core 2.2

3、mysql8

通过下面步骤完美解决:

一、首先查看当前数据库编码

show variables like 'character%'

最后必须要达到下面的设置:

8e206d814ebeb271a3d4a1dd218fd8e7.png

二、更改数据库编码

ALTER DATABASE 数据库名称  DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

三、更改所有表和列编码

先生成所有表的更改语句,这样可以批量mysql所有表和列编码为utf8mb4

SELECT

CONCAT(

'ALTER TABLE ',

TABLE_NAME,

' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;'

)

FROM

information_schema.`TABLES`

WHERE

TABLE_SCHEMA ='数据库名称';

把上面查询结果导出,执行就行了。

四、更改数据库配置

数据库配置my.ini或my.cnf,你的配置可能不叫这个句子。

修改为如下配置:

[client]

default-character-set=utf8mb4

[mysql]

default-character-set=utf8mb4

[mysqld]

collation-server = utf8mb4_general_ci

character-set-server = utf8mb4

更改之后重启mysql

五、修改数据库连接

经过上面4步骤,以为就万事大吉了。

注意:一定要修改程序的数据库连接,不然照样报错。

如下:

Host=localhost;Port=3306;Database=lanhu;Uid=www.lanhusoft.com;pwd=lanhusoft;Charset=utf8mb4;

之前我们写成utf8都不行,一定要写成utf8mb4

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值