使用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-winx64\data 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
重新运行程序。成功解决。
不知道为什么我的必须要重装服务。。