先說下環境:
連接的是舊數據庫而不是新生成的庫,所以有很多不能刪的舊數據,表主鍵是char(32),在使用Pomelo.EntityFrameworkCore.MySql跑起來后就報錯了。
解決方式:在數據庫連接串加上 oldguids=true
說下原因:Pomelo.EntityFrameworkCore.MySql 使用 MySqlConnector 作為mysql數據連接層。 當MySqlConnector 遇到類型為char(36)/char(32)
的字段時,會轉換成guid,轉換不成功時就失敗報錯了。解決方案就是在連接串上設置guid的處理方式,參考
MySQL .NET Connection String Options
GuidFormat 一節。 其實只要GuidFormat不是char32,36都能避免這個錯誤。
同時github上的問題:
