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 ...
随机推荐
- OpenStack知识点详解
一:云计算 一.起源 1. 云计算这个概念首次在2006年8月的搜索引擎会议上提出,成为了继互联网.计算机后信息时代的又一种革新(互联网第三次革命). 2. 云计算的核心是将资源协调在一起,使 ...
- 如何使用git命令行上传项目到github
第一步:我们需要先创建一个本地的版本库(其实也就是一个文件夹). 你可以直接右击新建文件夹,也可以右击打开Git bash命令行窗口通过命令来创建. 现在我通过命令行在桌面新建一个TEST文件夹(你也 ...
- BFC与优雅降级 渐进增强——学习笔记
BFC(块级格式化上下文) BFC(Block formatting context) 直译为"块级格式化上下文". 元素的显示模式 我们前面讲过 元素的显示模式 display. ...
- SpringBoot工程创建的三种方式
一. 通过IDEA的spring Initializer创建 1. 打开创建项目面板 File->New->Project->Spring Initializr 2. 填写Maven ...
- 使用jetty作为内嵌服务器启动项目
http://blog.csdn.net/robinpipi/article/details/7557035 需求:把jetty作为内嵌的一个服务器,直接启动,web项目不用部署在应用服务器中.在网上 ...
- 如何减小SRAM读写操作时的串扰
静态存储器SRAM是一款不需要刷新电路即能保存它内部存储数据的存储器.在SRAM 存储阵列的设计中,经常会出现串扰问题发生.那么要如何减小如何减小SRAM读写操作时的串扰,以及提高SRAM的可靠性呢, ...
- 使用VUE开发用户后台时的动态路由问题、按钮权限问题以及其他页面处理问题
如今前后端分离是大势所趋,笔者虽然是做后台的,但也不得不学学前端的流行框架VUE -_-||| . 为了学习VUE,笔者搭建了一个简单的用户后台,以此来了解VUE的开发思路(注:本项目不用于实际开发, ...
- UPX的使用
UPX是一个通用可执行文件压缩器,由于其具有: 压缩率高:压缩效果优于zip/gzip: 解压速度快:在奔腾133上即可达到大约10MB/秒: 压缩的可执行文件没有额外的内存开销: 安全:可以列表,检 ...
- 【Tomcat】JSP使用Session、Cookie实现购物车
购物界面shop.jsp 初始页面 添加商品后,在session中设置属性,重定向回到shop.jsp,然后根据session的内容显示结果 Cookie设置setMaxAge可以延长session的 ...
- 这才是你需要的最基础的.Net基础面试题(通俗易懂,最基础的.Net)2
51. 委托回调静态方法和实例方法有何区别? 当一个实例方法被调用时,需要通过实例对象来访问,绑定一个实例方法到委托必须同时让委托得到实例方法的代码段和实例对象的信息,这样在委托被回调时候.NET才能 ...