前面遇到过这个问题,也在博客里面写了,但是没有找到原因,今天需要重新开始一个小项目,当然要用最新的MySQL连接器,于是仔细验证,终于找到问题所在:

如果一个字段定义为 CHAR(36), 则MySQL官方的连接器会将其当成 GUID 类型,有些情况下会要求你输入(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)形式的字符串,否则会报错。实际上,有时候某个字段碰巧设为可CHAR(36), 但是我们的本意并非当它是GUID。

(例如使用 MySqlDataAdapter 的 Fill 方法填充 DataTable时,就会抛出 Exception。可以使用连接器安装后所附带的 TableEditor 进行观察,重复出这个Bug)

解决方法:将这个字段修改为 VARCHAR(36) 或者 CHAR(40),总之,不是 CHAR(36) 就可以了。

posted on   精思入神  阅读(341)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2008-06-10 SketchPad
2008-06-10 LinqDataSource with ASP.NET data controls
2008-06-10 SIcon Gantt Chart 基于Js 的甘特图控件
2008-06-10 JavaScript快捷菜单



点击右上角即可分享
微信分享提示