精华内容
参与话题
问答
  • Migration 使用方法

    2016-04-29 10:02:00
    2、Add-Migration 为挂起的Model更改创建迁移版本 2、Update-Database 更新数据库命令 (1)默认更新到最新版本 (2)更新到特定版本 -TargetMigration(如下图)。 此命令可当作回滚用,如我已经完成了...

    1、Enable-Migrations 启用迁移

    2、Add-Migration 为挂起的Model更改创建迁移版本

    2、Update-Database 更新数据库命令

       (1)默认更新到最新版本

       (2)更新到特定版本 -TargetMigration(如下图)。

       此命令可当作回滚用,如我已经完成了所有的数据库更新。但因为某种原因,要回滚到20160322的版本。就可以使用上述命令:Update-Database -TargetMigration 20160322

    转载于:https://www.cnblogs.com/checccy/p/5445282.html

    展开全文
  • django migration详解

    千次阅读 2019-05-31 17:54:10
    用了这么久的migration,是时候总结一下这些命令都干了什么啦~ python manage.py makemigrations 首先,django会检查创建或修改数据库的合法性,如果不合法会给出提示,比如CharField必须设置max_length,新增了...

    用了这么久的migration,是时候总结一下这些命令都干了什么啦~

    python manage.py makemigrations

    首先,django会检查创建或修改数据库的合法性,如果不合法会给出提示,比如CharField必须设置max_length,新增了没有默认值的非空字段。

    第一次执行该操作:会在app下面创建migrations目录,并创建0001_inital.py文件,文件中记录了当前的建表、依赖等信息。

    下一次执行该操作:

    如果有关于model.py的改动,会在migrations下生成已修改内容为名,类似0002_alter_permission_name_max_length.py的文件,文件中记录了你修改字段等信息

    如果没有改动则提示:No changes detected

    这些改动在此时都没有迁移到数据库!!!

    python manage.py sqlmigrate appname 0001

    可以查看下migrations 0001会对应于什么样子的SQL命令

    python manage.py showmigrations

    可以查看当前项目所有的app及对应的已经生效的migration文件,[x]表示migrte通过,[]表示未通过 

    admin
     [X] 0001_initial
     [X] 0002_logentry_remove_auto_add
     [ ] 0003_logentry_add_action_flag_choices
    sessions
     [X] 0001_initial
    contenttypes
     [X] 0001_initial
     [X] 0002_remove_content_type_name

    []migration文件未通过的,可以通过删除migrations下对应名称文件撤销这次更新

    python manage.py migrate

    将改动迁移到数据库,完成建表、修改字段等操作,操作成功后会在数据库django_migrations表中添加一条数据,表示migration文件已迁移

     

    总而言之,makemigration生成ddl(数据库模式定义语言),migrate执行ddl

     

    参考:

    Django框架下的model管理makemigration & migrate

    https://blog.csdn.net/cnenjinglang/article/details/80517681

    理解Django的makemigrations和migrate

    https://blog.csdn.net/liuweiyuxiang/article/details/71150965

    展开全文
  • ef数据迁移命令总结之Add-Migration

    万次阅读 2018-10-02 21:45:05
    ef数据迁移命令总结之Add-Migration 首先我们可以在vs的程序包管理控制台输入 get-help Add-Migration -detailed以查看详细信息。 个人感觉有一篇好的文章,...

    ef数据迁移命令总结之Add-Migration

    首先我们可以在vs的程序包管理控制台输入 get-help Add-Migration -detailed以查看详细信息。

    个人感觉有一篇好的文章,http://www.mortenanderson.net/code-first-migrations-for-entity-framework ,
    在本人的感觉就是 其对这些命令的掌握很深刻,所以在项目中摘录好的地方进行翻译,如果侵权,请联系删除。


    Add-Migration 
    -Name LearningMpaAbp.EntityFramework 
    -Force 
    -ProjectName LearningMpaAbp.EntityFramework  
    -StartUpProjectName ConsoleApp1  
    -ConfigurationTypeName  LearningMpaAbp.Migrations.Configuration 
    -ConnectionStringName Default  
    
    
    Add-Migration 
    -Name LearningMpaAbp.EntityFramework 
    -Force 
    -ProjectName LearningMpaAbp.EntityFramework  
    -StartUpProjectName ConsoleApp1  
    -ConfigurationTypeName  LearningMpaAbp.Migrations.Configuration 
    <!-- 如下和上边的 -ConnectionStringName Default  的作用是一样的 -->
    -ConnectionString "data source=DESKTOP-H6LD3FA\SQLEXPRESS;Database=LearningMpaAbp;User Id=sa;Password=123456;" 
    -ConnectionProviderName System.Data.SqlClient
    
    
    

    名称Add-Migration

    The add-migration command is one of the key commands in code first migrations. When you make changes to your domain model and need them dded into your database you create a new migration. This is done with the Add-Migration command. In it’s simplest form you need only toprovide a migration name.

    add-migration命令是code first migration中的关键命令之一。当您对领域域模型进行更改并需要将它们时添加到数据库中,您将创建一个新的迁移。这是通过Add-Migration命令完成的。用最简单的形式,你只需要提供迁移名称。

    The Add-Migration command scaffolds your changes into a cs file. This cs file is placed in the same folder as the configuration file for the DbContext you are targeting.

    Add-Migration命令将您的更改构建到一个cs文件中。这个cs文件与配置文件放在同一个文件夹中,服务于您要瞄准的DbContext。

    摘要
    Scaffolds a migration script for any pending model changes.
    为任何待定的模型更改 搭建迁移脚本。

    语法

        Add-Migration
         [-Name] <String> 
         [-Force] [-ProjectName <String>] 
         [-StartUpProjectName <String>] 
         [-ConfigurationTypeName <String>] 
         [-ConnectionStringName <String>] 
         [-IgnoreChanges] 
         [-AppDomainBaseDirectory <String>]
          [<CommonParameters>]
    
       Add-Migration 
        [-Force] [-ProjectName <String>]
        [-StartUpProjectName <String>]
        [-ConfigurationTypeName <String>] 
         -ConnectionString <String> 
        [-Name] <String> 
         -ConnectionProviderName <String> 
        [-IgnoreChanges] 
        [-AppDomainBaseDirectory <String>] 
        [<CommonParameters>]    
    

    说明
    Scaffolds a new migration script and adds it to the project.
    搭建一个新的数据迁移脚本 ,并把它添加到项目中。

    参数
    -Name

    Specifies the name of the custom script.

    指定自定义脚本 的名字

    -Force []

    Specifies that the migration user code be overwritten when re-scaffolding an existing migration.

    指定 当我们重新 搭建一个已经存在的数据迁移的时候,原本存在的数据迁移代码可以被重写

    If you want to re-scaffold an existing migration you will have to use the -Force parameter. However you can only re-scaffold if the migration is not yet applied to database. Else you will need to revert back to the migration previous to the one you want to re-scaffold.

    如果要重新构建现有迁移,必须使用-Force参数。然而,只有在迁移尚未应用到数据库时,才能重新构建框架。否则你 需要回复到要重新构建的迁移之前的迁移。

    -ProjectName

    Specifies the project that contains the migration configuration type to beused. If omitted, the default project selected in package manager console is used.

    指定 包含了数据迁移配置类型的项目,如果被忽略,就会选择包管理控制器中的默认项目。

    If your migrations should not be placed in your default project you can utilize the -projectname parameter

    -StartUpProjectName

    Specifies the configuration file to use for named connection strings. If omitted, the specified project’s configuration file is used.

    这个其实我也看不懂, 但实验之后,大概是从 解决方案资源管理器中选择一个项目 作为启动项目。如果我们忽略的话,就会默认为解决方案资源管理器中的启动项目。

    -ConfigurationTypeName

    Specifies the migrations configuration to use. If omitted, migrations willattempt to locate a single migrations configuration type in the target project.

    这一段英文解释了,大概还是不会懂。

    If you have multiple DbContext in your project you will need to indicate which is going to have the database update. This can be done with -ConfigurationTypeName. The ConfigurationTypeName is the name of your Configuration class in your migration folder.

    如果您的项目中有多个DbContext,那么您需要指出哪个数据库会更新。这可以用-ConfigurationTypeName做。ConfigurationTypeName方法是迁移文件夹中配置类的名称。

    然后是一个多个DbContext的例子
    		
      First step
      ==========
      
      enable-migrations -ContextTypeName IdentityDb -MigrationsDirectory DAL\IdentityMigrations
      
      enable-migrations -ContextTypeName SMSContext -MigrationsDirectory DAL\SMSMigrations
      
      Second Step
      ===========
      
      add-migration -ConfigurationTypeName SMSApp.DAL.IdentityMigrations.Configuration "InitialCreate"
      
      add-migration -ConfigurationTypeName SMSApp.DAL.SMSMigrations.Configuration "InitialCreate"
      
      Third Step
      ==========
      
      update-database -ConfigurationTypeName SMSApp.DAL.IdentityMigrations.Configuration -verbose
      
      update-database -ConfigurationTypeName SMSApp.DAL.SMSMigrations.Configuration -verbose
    

    -ConnectionStringName

    Specifies the name of a connection string to use from the application’s configuration file.

    从应用程序的配置文件中指定要使用的连接字符串的名字。我们用两个参数-ConnectionString -ConnectionProviderName ,或者用这样一个参数代替

    -ConnectionString

    Specifies the the connection string to use. If omitted, the context’s default connection will be used.

    指定要使用的连接字符串。如果省略,上将使用DbContext的默认连接。
    例如"data source=DESKTOP-H6LD3FA\SQLEXPRESS;Database=LearningMpaAbp;User Id=sa;Password=123456;"

    -ConnectionProviderName

    指定ConnectionProviderName 例如 System.Data.SqlClient

    -IgnoreChanges []

    Scaffolds an empty migration ignoring any pending changes detected in the current model.This can be used to create an initial, empty migration to enable Migrations for an existing database. N.B. Doing this assumes that the target database schema is compatible with the current model.
    这样做假设目标数据库模式与当前的模型是一致的。构建一个空迁移和对应的空的迁移文件,忽略在当前模型中检测到的任何挂起的更改。可用于创建初始的空迁移,以支持对现有数据库的迁移。

    -AppDomainBaseDirectory

    Specifies the directory to use for the app-domain that is used for running Migrations code such that the app-domain is able to find all required assemblies. This is an advanced option that should only be needed if the solution contains several projects such that the assemblies needed for the context and configuration are not all referenced from either the project containing the context or the project containing the migrations.
    指定用于运行数据迁移代码的app-domain的路径,从而app-domain 可以找到所有需要的程序集。这是一个高级选项,只有当解决方案包含多个项目时才会需要。这样的话,context和configuration所需要的程序集就不仅仅从那些包含context和包含migrations的项目中获取。

    展开全文
  • EFCodeFirst:Migration的使用

    千次阅读 2018-11-07 10:07:15
    开启Migration 1. 通过 Tools->Nuget Package Manager->Package Manager Console 打开Package Manager Console窗口 2. Default project选择当前的DbContext所在的项目 3. 通过命令开启Migration Enable-...

    开启Migration

    1. 通过 Tools->Nuget Package Manager->Package Manager Console 打开Package Manager Console窗口

    2. Default project选择当前的DbContext所在的项目

    3. 通过命令开启Migration

    Enable-Migrations

    开启之后,DbContext对应的项目中会生成一个Migrations的文件夹, 主要用来存放各个版本自动生成的更新描述文件

    类似于下图:

    image

    初始化库

    通常你新建了模型,在数据库建库之后需要执行一次add-migration命令生成一个库初始化的migration记录

    add-migration 20160201003

    后面部分的名字我通常都会按照当天日期拼接当天的版本号组成,另外一种不错的实践是按照增加的业务名称命名,英文名称会相对好点.

    更新库

    库的更新可以分为手动更新跟自动更新。

    手动更新通过Update-Database命令来把刚才的变更更新到库里面。通常DEV环境可以这么做,因为是直连的, 但是我们的Staging与Production环境是不可以直连的,需要使用自动更新。

    自动更新需要设置,当你通过 add-migration生成了migration脚本,那当程序启动的时候,如果发现数库接口不一致,那这个就需要更新,这个时候如果是自动更新的状态,那程序会自动执行(从意思上等同于update-database, 产生的效果相同,但是并未实际考证是否也是跑的update-database命令), 因此无论是dev环境还是staging, production都可以通过自动update-database来完成数据库的更新。

     

    以上是EFcodefirst使用migrations的三个步骤,下面讲讲如何设置自动更新。

     

    如何设置自动更新

    这里有两步:

    1. 在migrations文件夹下有个configuration的文件, 代码如下:

    public Configuration()
            {
                AutomaticMigrationsEnabled = true;
                AutomaticMigrationDataLossAllowed = false;
            }

    AutomaticMigrationsEnable = true 之后, 设置EF为自动做数据库更新。

    2. 在Global.cs或者任何程序启动的地方加入:

    Database.SetInitializer(new MigrateDatabaseToLatestVersion<CustomerDbContext, Configuration>());

    这句是设定当前DbContext的一个初始化配置.

    潜在的问题

    自动迁移,在某些该名称,或者删除字段的时候,会造成现有数据的丢失,这个需要注意,目前我也是在探索过程中,有进一步的研究成果,会在更新博文说明。

     

    【补充部分】

    初始化脚本的更新

    public partial class InitDefaultData : DbMigration
        {
            public override void Up()
            {
                Sql(@"
    --初始化FileType原始数据
    insert into FileType (SysId,FileTypeId,FileTypeName,Status,CreationTime) select NEWID(),10001,'客户资料',0,GETDATE();
    insert into FileType (SysId,FileTypeId,FileTypeName,Status,CreationTime) select NEWID(),10002,'订单资料',0,GETDATE();
    insert into FileType (SysId,FileTypeId,FileTypeName,Status,CreationTime) select NEWID(),10003,'车辆资料',0,GETDATE();
    
    --初始化FileCategory原始数据
    insert into FileCategory (SysId,FileCategoryId,FileCategoryName,Status,CreationTime) select NEWID(),1,'图片',0,GETDATE();
    insert into FileCategory (SysId,FileCategoryId,FileCategoryName,Status,CreationTime) select NEWID(),2,'复印件',0,GETDATE();
    insert into FileCategory (SysId,FileCategoryId,FileCategoryName,Status,CreationTime) select NEWID(),3,'视频',0,GETDATE();
    insert into FileCategory (SysId,FileCategoryId,FileCategoryName,Status,CreationTime) select NEWID(),4,'Excel文件',0,GETDATE();
    insert into FileCategory (SysId,FileCategoryId,FileCategoryName,Status,CreationTime) select NEWID(),5,'Word文件',0,GETDATE();
    ");
            }
    
            public override void Down()
            {
                Sql(@"truncate table FileType");
                Sql(@"truncate table FileCategory");
            }
        }

    可以通过Sql函数来执行一些自定义的SQL脚本。

    展开全文
  • Migration升级数据库 有时需要更改现有的数据库架构。如果我们将添加,更新或删除数据库中的某些字段然后运行我们的应用程序,我们将看到来自Room的异常: java.lang.IllegalStateException: Room cannot verify the...
  • 如何重置migration

    2018-09-07 12:00:00
    开发十年,就只剩下这套Java开发体系了 &gt;&gt;&gt; ...
  • migration常用命令

    千次阅读 2019-06-27 11:30:23
    php artisan make:migration create_users_table --create=users 【把users改成自己的表名称,这里不需要加前缀】 运行指定部分migrata 在database/migrations下创建一个文件夹single,然后将需要migrate的文件放...
  • Linux migration 进程含义

    万次阅读 2017-06-01 09:47:37
    Migration 进程迁移什么是进程迁移?进程迁移就是将一个进程从当前位置移动到指定的处理器上。它的基本思想是在进程执行过程中移动它,使得它在另一个计算机上继续存取它的所有资源并继续运行,而且不必知道运行进程...
  • mysqld: Can not perform keyring migration : Invalid --keyring-migration-source option. 解决方案: mysqld命令是MySQL的主程序,用来安装初始化;mysql是MySQL的命令行工具;这里因为命令敲成了mysqld -u ...
  • Django开发—如何重置migration

    万次阅读 2016-08-10 01:33:24
    Django开发—如何重置migration@(Django)[migration]情景一:不需要原有的数据库数据 删除数据库所有的表 删除项目的migration模块中的所有 文件,除了init.py 文件 执行脚本 python manage.py makemigrations ...
  • Lavarel5.2主要有以前几个部分要经常操作,只要掌握常用的...Migration篇1.创建Migration在控制台输入命令 创建表的命令,我们习惯用行为命名php artisan make:migration create_users_table --create=users修改表的命
  • Migration

    千次阅读 2012-06-24 12:02:51
    命令列表   rake db:migrate 命令作用:将所有未实施的迁移任务都实施到目标数据库上。   ...rake db:migrate VERSION=20080906120000 ...命令作用:撤销迁移任务到指定版本 ...迁移版本信息可以在所创建库(如elvuel_...
  • migration

    2012-09-20 16:55:00
    ===========================如何写migration=========================1.migration的结构 每一个migrate的类都是 ActiveRecord::Migration 的子类,每一个migrate都要重写两个方法 up 和 down: Ruby代码...
  • Migration

    2008-10-28 14:35:37
    Creating and Running Migration 在每一個migration file 的前面,有一個三位數的數字,和一個underscore,這個三位數的數字是migration在應用時的版本值。 我們可以餵了新增一個column而新增一個migration ...
  • Migration

    2016-12-13 11:00:26
    删除字段或者添加字段php artisan make:migration add_要添加字段column_to表名 –table=表名 composer require doctrine/dbal 如果要删除字段或者是改名字的话要映入这个包
  • Migration

    2005-09-25 11:01:00
    希望,不要失望,我只要稳定。迁移开始了。
  • Database Migration

    2018-07-16 18:49:22
    1. Database Migration. 1.1 New DB Creation. We create the new database MAP7APP, MAP7POS via Automation scripts 1. Create database MAP7APP, run automation scripts (The Script i...
  • Libvirt migration

    千次阅读 2015-04-17 15:15:01
    Guest migration Network data transports Hypervisor native transportlibvirt tunnelled transport Communication control paths/flows Managed direct migrationManaged peer to peer migrationUnmanag
  • Mybatis migration使用初探

    千次阅读 2015-04-12 13:32:56
    持续交付项目中,项目会不断的迭代上线,这是会出现...于是便有了数据库Migration的诞生。我所在的项目是SpringMVC配合Mybatis的开发框架。作为一个数据库集成框架,Mybatis在使用上还是比较方便的。言归正传,为了项
  • MySQL Migration Toolkit

    2016-01-07 10:31:21
    使用MySQL Migration Toolkit快速将Oracle数据,SQL Server中的数据等各种数据源导入MySQL数据库

空空如也

1 2 3 4 5 ... 20
收藏数 54,308
精华内容 21,723
关键字:

migration