前面遇到过这个问题,也在博客里面写了,但是没有找到原因,今天需要重新开始一个小项目,当然要用最新的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) 就可以了。