如何解决:MySQL5.7.27修改编码格式为utf8后,为什么仍然无法往数据库中插入中文字符呢?

ba_wang_mao 2020-10-10 12:21:19
一、我的MySQL5.7.27数据库版本如下:



二、数据库定义了3个字段 ,参见下图:
id,name和map。
id和name为varchar类型字段。


三、按照网上的方法,将 C:\ProgramData\MySQL\MySQL Server 5.7\my.ini 按照下图修改



四、重启电脑
五、查看修改后的编码格式
可以观察到所有编码都被修改为utf8


五、将数据库所有记录全部删除
六、运行C#程序往清空的数据库中插入新记录,记录中包含【中文信息】
但是包含中文信息的记录仍然插入不到数据库中。
注:只要不包含中文信息就可以插入成功,包含中文信息就插入失败[color=#FF0000][/color]

请教:到底是什么原因呀!

...全文
1455 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ba_wang_mao 2020-10-10
  • 打赏
  • 举报
回复
我把数据表的编码格式也修改成UTF8,清空数据库,然后重启电脑。 运行C#程序,仍然是只要包含中文信息的记录仍然插入不到数据库中, 请问:什么原因?
ba_wang_mao 2020-10-10
  • 打赏
  • 举报
回复
问题解决了,刚刚错误的原因是主键id没有写值,当给主键id写值后,给name 字段写中文名称OK。 刚刚解决问题的关键步骤如下: 1、我删除了数据库reservoirinfo,重启电脑, 2、重新创建了一个reservoirinfo数据库,选择Charset/Collation=utf8 3、c#程序连接时增加Charset=utf8
 string ConnectionStr = "server=localhost;port=3306;user Id=root;password=12345678; database=reservoirinfo ;Charset=utf8;Allow User Variables=True";
经验证,C#程序也可以插入中文名称到name字段。 总结: 关键原因是要删除原数据库和表,重新创建一个utf8数据库和表。
ba_wang_mao 2020-10-10
  • 打赏
  • 举报
回复
用MySQL自身提供的 MySQL Workbench 8.0 软件重新创建了一个utf8的数据表, 只要给VARCHAR(20)的字段写入中文字符就报错,参见下图
ba_wang_mao 2020-10-10
  • 打赏
  • 举报
回复
1、数据库连接时增加 Charset=utf8 2、排序规则全部为utf8-general-ci 3、引擎为INNODB,参见my.ini 以上3方面我全部确认后,插入中文字符还是会失败。
xuzuning 2020-10-10
  • 打赏
  • 举报
回复
数据库也重建了吗?
正怒月神 2020-10-10
  • 打赏
  • 举报
回复
只能帮你到这里了。。。。。
消逝_ 2020-10-10
  • 打赏
  • 举报
回复
string strConn = "server=localhost;port=1234;user id=root;password=123456;database=123db;Charset=utf8;Allow User Variables=True;";试试这个呢?
消逝_ 2020-10-10
  • 打赏
  • 举报
回复
C#的连接字符串中有写“Charset=utf8;”吗。没有的话,试试这个呢
强行中文名 2020-10-10
  • 打赏
  • 举报
回复
好像mysql的utf8编码有些问题,参考:https://zhuanlan.zhihu.com/p/63360270 不知道是不是这个的影响,试试utf8mb4的编码呢?

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧