记录一次 数据库迁移 MSSQL 到MySql

需要把 startup.cs 行中的  UseSqlServer改为UseMySql

services.AddDbContext<Model.Models.BaoPinKeContext>(options => options.UseMySql(Configuration["ConnectionString"]));

model层需要移除 Microsoft.EntityFrameworkCore.SqlServer 引用

引入 Pomelo.EntityFrameworkCore.MySql、Pomelo.EntityFrameworkCore.MySql.Design包

然后再 程序包管理控制台 输入 Add-Migration "xxx_Initial" 生成迁移文件
生成迁移文件后需要修改 一下:

1.将 “ntext” 类型的字段 改为 “text ”类型

2.去掉字段中的默认值 

做好这些修改后,执行Update-DataBase 即可

你以为这就完了?这只是迁移表结构而已

接下来迁移 数据,我用的而是 Navicat PreMium 功具

第一次导入的时候没有导入数据成功,后来检查了一下原来是数据库的表编码格式与源数据库的编码格式不一致,导致了数据导不进去

首先 查看表编码格式

SELECT
TAble_name,Table_Collation
FROM
information_schema.`TABLES`
WHERE
TABLE_SCHEMA = '{Table_Name}';

我源数据库上的编码格式为 utf8mb4_bin

然后执行 语句 


select CONCAT("ALTER TABLE `", TABLE_NAME,"` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;") from information_schema.tables where table_schema='BaoPinKe'

获得以上修改语句,执行,就能成功修改数据表的编码格式了

然后重新执行数据导入,成功了!

原文地址:https://www.cnblogs.com/YQYC/p/13099222.html