ABP (.Net Core 3.1版本) 使用MySQL数据库迁移启动模板项目(1)
最近要搭建新项目,因为还没有用过.net core,所以想用.net core的环境搭建新项目,因为不熟悉.net core的架构,所以就下载了abp项目先了解一下。
因为自己太菜了,下载了模板项目,在启动的过程中一波三折,其曲折真是无法用言语形容。(但是我没有灰心!没有什么技术是在努力的情况下学不会的,是嘛)
在搜集信息的过程中,很多网友分享的资料都很有帮助,但是有一个问题的方法对于我这边遇到的问题却用不上,因为问题没有得到解决。但是却给了我不同的思路,从而让问题得到解决,模板项目终于顺利启动。
先贴上我参考的帖子,正是因为有优秀的网友的分享,我才打开了abp模板项目的大门!(不多说了,远程握手为敬吧,哈哈)
参考资料
按照参考资料的操作,只需要简单几步就可以把模板项目启动起来,但是!不知道为何,任何新鲜的技术到了我这里,就要费上N个步骤,花费九牛二虎之力,绞尽脑汁都还是一堆红色报错,满屏红让我沮丧,让我怀疑人生......
emmmm直接开始从步骤说起吧。
abp模板下载
VS2019打开项目解决方案(用VS2017应该也可以,不过要额外下载.net sdk 3.0安装。)
找到【解决方案名.Web.Host】项目里面的appsettings.json,修改数据库连接字符串
因为我本地的sqlserver没有连接成功,缺配置工具,没有选择重装。改换mysql配置。所以我的配置是"ConnectionStrings": { "Default": "server=localhost;uid=root;pwd=123;port=3306;database=ExtraModuleDb;" }在【解决方案名.EntityFrameworkCore】用Nuget添加安装引用(也可以参考上面的第二个链接,用命令执行)
install-package pomelo.entityframeworkcore.mysql.designinstall-package pomelo.entityframeworkcore.mysql在【解决方案名.EntityFrameworkCore】里面找到DbContextConfigurer文件,修改数据库配置连接

`public static void Configure(DbContextOptionsBuilder<KYKWMSExtraModuleDbContext> builder, string connectionString)
{
builder.UseMySql(connectionString);
} public static void Configure(DbContextOptionsBuilder<KYKWMSExtraModuleDbContext> builder, DbConnection connection)
{
builder.UseMySql(connection);
}`
数据迁移
最好先删除【解决方案名.EntityFrameworkCore】下的【Migration】文件夹
然后将【解决方案名.Web.Host】设为启动项目,在程序包管理器控制台(Nuget控制台)里设定默认项目为EntityFrameworkCore。

在程序包管理器控制台输入命令:
Add-Migration Init
生成成功,会看到【解决方案名.EntityFrameworkCore】下的【Migration】文件夹下面多了三个文件。
然后更新数据库,abp会自动建库。在程序包管理器控制台输入命令:
Update-Database -Verbose到了这里呢,问题就来了,我正是被这个问题困扰了一个上午。
好熟悉的错误:
You have an error in your SQL syntax肉眼可见,datetime那里带了一个长度,而在mysql语句创建表的时候,datetime类型是不允许带长度的。

于是我的做法就是,手动把代码里面datetime(6)全部替换成datetime,再次在程序包管理器控制台输入命令:
Update-Database -Verbose但得到的结果仍然是
You have an error in your SQL syntax。反复操作Add-Migration InitUpdate-Database -Verbose后,依然没办法解决这个问题,我有一点无奈,同时有一点不甘心。我可是个老鸟啊,遇到未知的问题,解决问题的能力就只能是坐着叹气了么?! (肯定不是!)午休睡了一觉,下午起来接着解决这个问题。我看了一下,为什么是添加
pomelo.entityframeworkcore.mysql引用呢?这个产商不是官方Oracle的呢。以前的项目不都是添加MySql.Data吗?带着这个疑惑,于是我就尝试着换MySql.Data去添加引用,添加引用的时候,发现它有一个EntityFrameworkCore的版本:MySql.Data.EntityFrameworkCore,于是把两个都安装上。(一定是要两个都安装,只安装MySql.Data是不完整的,至少在数据库配置链接出错的时候,是没有提示,不知道应该改成UseMySQL才可用)

安装好后,运行发现有报错,原来数据库配置连接里面的MySql要大写的才对。(其实报错的时候会很疑惑,明明是MySql啊,为什么不支持了呢?也不知道是要改大写,把鼠标放上去选择修复的时候,就变成大写,错误就消失了。)


就这样编译成功!说明用官方的包也是可以用的!
接着重新重复第6步的命令:
删除【Migration】文件夹下面的文件,在程序包控制台执行命令:
Add-Migration Init
Update-Database -Verbose
好了!看到表成功的在创建!
但是,不能开心太早!问题又来了!

字符串的长度太长了,最后一句提示varchar max length=65535。我还不知道这些代码是怎么生成的,要怎么把最基础的代码改掉才不至于报低级的错误。所以在这里我解决的方法就是手动去把【Migration】文件夹下面的文件,超出数据类型长度的全部手动修改。第一次没有改全的,报一次错改一次,后面基本都是数据类型长度超出的问题。全部改好了,再 Update-Database,最终数据库成功创建好,项目也运行起来了。



emmmm,前端的因为还不太熟悉这种分离式的项目,vue.js还跑不起来,看不到整个项目的全面貌。这里就作为第一部分结束先。
ABP (.Net Core 3.1版本) 使用MySQL数据库迁移启动模板项目(1)的更多相关文章
- ABP实践(1)-通过官方模板创建ASP.NET Core 2.x版本+vue.js单页面模板-启动运行项目
1,打开ABP官网下载模板页面 2,根据下图选择对应的选项及输入项目名 注:上图验证码下方的选择框打钩表示下载最新稳定版,不打钩表示下载最新版本(有可能是预览版) 3,解压下载的压缩包 解压之后是个a ...
- .net core 2.1 Ef 连接Mysql数据库 DB first
本文介绍.net core2.1版本下 Mysql数据库采用DB first方式使用Ef 点击查看更简单的方法 1. 新建基于.net core2.1的项目(略) 2. 从nuget中引用Micros ...
- MySQL JDBC驱动版本与MySQL数据库版本对应关系
前言:前段时间发现在家使用和公司一样的mysql jdbc驱动版本发生了异常,原因:家里mysql数据库版本与公司不一致导致.查询了相关资料,发现mysql jdbc驱动版本与mysql数据库版本有一 ...
- 在win10系统安装两个不同版本的mySQL数据库
我们项目用的mySQL数据库,为了回家看代码方便,于是在本地安装mySQL数据库,一开始安装了比服务器mySQL5.7.24更高版本的mySQL8.0.11,结果项目启动报错,估计是版本太高项目中引入 ...
- MySQL数据库迁移(转)
MySQL数据库迁移(数据文件直接迁移) 在今年10月下旬的时候,公司的服务器需要迁移,其中涉及到了MySQL数据库迁移.查看了一下MySQL数据文件的大小,接近60G的大小(实际数据并没用那么多). ...
- django2.0+连接mysql数据库迁移时候报错
django2.0+连接mysql数据库迁移时候报错 情况一 错误信息 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 ...
- MySQL数据库迁移与MySQL数据库批量恢复
目录 一.MySQL数据库迁移或备份 1. 了解使用InnoDB引擎创建数据库所产生的文件 2. 迁移数据库步骤 1. 从A服务器迁移至B服务器 2. MySQL重装并导入之前数据库 二.MySQL数 ...
- MySQL数据库企业集群项目实战(阶段三)
MySQL数据库企业集群项目实战(阶段三) 作者 刘畅 时间 2020-10-25 目录 1 架构拓扑图 1 1.1 方案一 1 1.2 方案二 2 ...
- mysql数据库迁移到oracle数据库后 如何删除相同的数据
mysql数据库迁移到oracle数据库后 如何删除相同的数据 首先搞清楚有多少数据是重复的 select pid from product group by pid having count(pid ...
随机推荐
- APP元素定位和操作
webdriver 提供了八种元素定位方法: 在 Python 语言中对应的定位方法如下:find_element_by_id()find_element_by_name()find_element_ ...
- 01 . Mysql简介及部署
Mysql数据库简介 什么是数据? 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材,数据是信息的表现形式和载体,可以是符号,文字,数字,语音,图 ...
- 跨域解决方案 - webpack devServer
1. 定义 如果一个项目中配置了webpack, 那么我们使用 webpack devServer 来配置代理转发请求来达到解决跨域问题的目的 webpack devServer 能够解决跨域问题的根 ...
- Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
hive运行查询语句时报错: Error: org.apache.hive.service.cli.HiveSQLException: Error while processing statement ...
- 【Linux】CentOS7安装tomcat8.5.45,这方法也太简单了吧!
1.下载tomcat https://tomcat.apache.org/download-80.cgi 选择tar.gz.下载完大概9495kb大小的压缩包 2.将文件从Windows复制到Cent ...
- css背景图定位和浮动
网站图标引入:<link rel="shortcut icon" href="ico图标地址"> 背景图片 background-image: u ...
- 利用jieba库画词云
from wordcloud import WordCloud import matplotlib.pyplot as plt import jieba # 生成词云 def create_word_ ...
- Java实现 LeetCode 167 两数之和 II - 输入有序数组
167. 两数之和 II - 输入有序数组 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必 ...
- Java实现 蓝桥杯VIP 算法提高 棋盘多项式
算法提高 棋盘多项式 时间限制:1.0s 内存限制:256.0MB 棋盘多项式 问题描述 八皇后问题是在棋盘上放皇后,互相不攻击,求方案.变换一下棋子,还可以有八车问题,八马问题,八兵问题 ...
- Java实现 LeetCode 4 寻找两个有序数组的中位数
寻找两个有序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 n ...