【问题标题】:Automatic migration runs on a production server自动迁移在生产服务器上运行
【发布时间】:2014-05-07 19:26:03
【问题描述】:

我一直在笔记本上的 Visual Studio 2013 中开发我的应用程序,最后我决定将代码放在服务器(Windows Server 2012)上,所以我备份了我的 MS SQL 数据库,在生产服务器上恢复它,复制了我的代码,创建了一个站点并最终得到以下消息:

System.Data.SqlClient.SqlException:数据库中已经有一个名为“MyUserInfoes”的对象。

我使用 ASP.NET 身份,无法避免使用 自动迁移。不管怎样,我确实设置了

    Public Sub New()
        AutomaticMigrationsEnabled = True
        AutomaticMigrationDataLossAllowed = True
    End Sub

Configuration.vb 文件中,但没有任何改变。

自动迁移坚持在生产服务器上运行,我无法阻止它。请问这里有什么建议吗?谢谢!

【问题讨论】:

  • 您确定已迁移到数据库备份中的 migrationHistory 表?
  • 是的,我在,表在那里,完整的数据库备份和恢复
  • 看起来__MigrationHistory 中的元数据与实际的数据库架构不同步,因为它试图添加一个已经在数据库中的表。 prod 和 dev 服务器上的用户是否有不同的默认架构?
  • 不,除操作系统版本(Win 8.1、Win Server 2012)外,开发和生产系统上的一切都相同。我尝试运行“add-migration initial”加上“update-database”来获取空的 Up 和 Down 方法,但它没有帮助。是否有机会完全避免迁移?

标签: asp.net sql entity-framework entity-framework-migrations asp.net-identity


【解决方案1】:

可能的问题包括:

  1. 复制的代码在上下文或迁移类中使用不同的命名空间或不同类型。 因此不再匹配 [__MigrationHistory]

  2. 中的记录
  3. [__MigrationHistory] ​​不是备份和/或恢复的一部分

【讨论】:

  • 1.代码已从源 1:1 复制到目标。
  • 2. _MigrationHistory 表包含在备份中(所有表)。
猜你喜欢
  • 2018-03-23
  • 2012-12-28
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-09
  • 2021-04-19
相关资源
最近更新 更多