今天,重写安装了MySQL5.7.27程序。安装成功后,默认创建了一个数据库和一张表,然后使用MySQL数据库自带的工具软件MySQL WorkBench 8.0想往数据库中插入中文信息,结果报千字符集错误提示:
花费了大致1天时间予以解决,解决完成后整理一下,借此机会,发表出来,希望可以帮助大家。
第一步:先查询数据库支持的字符集
1、登录MySQL数据库,输入SQL语句: show variables like 'character%'; 参考下图:
show variables like 'character%';
可以观察到character_set_client,character_setdatebase,character_set_server这三个属性都不是utf-8。
第二步:找到my.ini文件然后进行修改
如果不知道my.ini文件在哪里,可以使用SQL语句:show variables like 'datadir%',查看my.ini文件在哪里。
show variables like 'datadir%';
从上图观察到my.ini在C:\ProgramData\MySQL\MySQL Server 5.7文件夹下。
找到后,使用记事本打开进行修改:
如图所示,66行处,添加客户端的字符集为utf8。77行处,添加服务端的字符集为utf8。
66行添加了
default-character-set=utf8
77行添加了
character-set-server=utf8
第三步:重启mysql服务
可以去任务管理器中,重启mysql的服务。
1、mysql服务在哪里找
我的操作系统是WIN10,在计算机管理---服务和应用程序---服务---MYSQL57
2、关闭MYSQL57服务
3、重新启动MYSQL57服务
第四步:再次查看一下当前数据库的字符集
1、SQL语句: show variables like 'character%';
show variables like 'character%';
可以观察到character_set_client,character_setdatebase,character_set_server这三个属性都已经是utf-8。
2、输入show variables like 'collation%';
show variables like 'collation%';
可以观察到 collation_connection,collation_database,collation_server 都是 utf8_general_ci
第五步:删除原先的数据库
原先创建数据库时,默认选择的字符集是latin1,我就吃了这个亏,没有将原先创建的数据库删除,仅仅将原先数据库的字符集修改为utf8,无论是用MySQL WorkBench 8.0软件还是C#程序(连接字符串增加Charset=utf8)统统无效,折腾了1天也没有解决,实在没招时,想到一个网友说删除原数据库试试,我就试了一下,果然解决啦!
第六步:新创建数据库,字符集选择为utf8
我是用MySQL5.7.27自带的MySQL WorkBench 8.0软件创建的。字符集选择Charset/Collation = utf8
第七步:MySQL WorkBench 8.0软件创建table1表,然后增加中文字段记录
1、创建table1表
table1表内有3个字段id,name和map。字段id和name都是VARCHAR类型的字段,id为主键。
2、name字段增加中文名称
3、应用,鼠标点击Apply
MySQL WorkBench 8.0软件插入中文名称字段成功。
第八步:C#程序增加中文字段记录
string ConnectionStr = "server=localhost;port=3306;user Id=root;password=12345678; database=reservoirinfo ;Charset=utf8;Allow User Variables=True";
切记:连接数据库字符串中需要增加 Charset=utf8
参考文献:
解决MySQL5.7版本以上不支持中文问题
https://blog.youkuaiyun.com/GUDUzhongliang/article/details/105097422
Windows下mysql5.7及以上版本中文乱码问题
https://blog.youkuaiyun.com/shuiyuetianwy/article/details/89467930
关于如何修改mysql5.7的编码格式改为 UTF-8 的问题
https://blog.youkuaiyun.com/weixin_43663575/article/details/105871586?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
MySQL5.7永久统一编码/字符集为utf8(解决乱码)
https://blog.youkuaiyun.com/Meiko1024/article/details/104783126?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
Windows下修改MySQL5.7的默认字符集(两种方法)
https://blog.youkuaiyun.com/qq_41855420/article/details/100189350?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase