使用ef core自动生成mysql表和数据编码的问题

mysql默认的编码是不支持中文的,需要改成utf8编码格式。

而我使用的Pomelo.EntityFrameworkCore.MySql组件生成mysql库和表,他是使用默认编码的。

网上大多说修改配置文件Character Set=utf8,我这里测试无效。

所以就想到修改mysql的默认编码。

在mysql安装目录下找到my.ini(我这里是这个名字,命名可以修改。只要创建服务的时候指定你自己的配置文件命名就ok)

[client]
default-character-set=utf8mb4
[mysqld]
basedir=D:mysql-5.7.25-winx64
datadir=D:mysql-5.7.25-winx64data
port=3306

character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
[mysql]
default-character-set=utf8mb4

修改配置文件如上。重启mysql服务, cmd输入

net stop mysql && net start mysql

运行程序,重新生成库和表。

发现无效。生成的编码格式并不是utf8

执行mysql查询命令:

show variables like '%char%';  

可以发现设置是成功了的。当时就心态就崩了,

然后执行命令手动创建一个库

create database encodtest

编码设置是成功了的。

找了好久解决办法。突然看到一个将mysql服务卸了重装的办法,死马当活马医吧!

首先,停止mysql服务

net stop mysql

然后卸载

sc delete mysql

最后进入mysql安装的bin目录执行

mysqld install

然后启动服务

net start mysql

重新运行程序。成功解决。

不知道为什么我的必须要重装服务。。

原文地址:https://www.cnblogs.com/FateHuli/p/10879955.html