在 ASP.NET Core 中使用 MySql 踩坑記錄


使用 Pomelo.EntityFrameworkCore.MySql 生成 MySQL 數據庫

關於如何使用請查看項目文檔即可
組件地址:https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql

問題描述

遇到的是在使用 CodeFirst 生成數據庫的字符集編碼問題
執行遷移命令:Add-Migration 版本 , Update-Database 生成數據庫(若無自動創建)的字符集為 latin1 -- cp1252 West European
此字符集將會在生成查詢語句包含中文的時候報如下錯誤

異常信息

Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_bin,COERCIBLE) for operation '='MySql.Data.MySqlClient.MySqlException (0x80004005): Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_bin,COERCIBLE) for operation '=' ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_bin,COERCIBLE) for operation '='

解決方案

其實組件最開始就建議了設置字符集為:utf8mb4(MySQL5.5.3及以上),所以遇到上訴錯誤只需要執行修改數據庫字符集命令即可

  • 手動創建字符集為utf8mb4的數據庫再執行遷移
  • 命令修改字符集:alter database 數據庫名稱 character set utf8mb4;,但是注意這並不能修改已創建的表的字符集編碼;故還是建議手動創建數據庫。

相關命令

  • 查看MySQL數據庫字符集:show variables like 'character_set_database';
  • 修改MySQL數據庫字符集:alter database 數據庫名稱 character set utf8mb4;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM