我使用的是带有NET Framework 4.5.1的MVC 5。使用代码优先。我还将迁移与SQL 2012服务器和(localdb)\v11.0一起使用。
在开发期间,我在我的开发计算机上创建了许多新的表,并更改了"Name“字段,我相信系统会为其创建索引。我加了几次又删了几次。
在那之后,我添加了许多新的不相关的表,但由于某些原因,我的迁移开始给我外部约束错误,因为"Name“字段的索引。这些错误随着我修复它们而不断增加,因此,我决定在迁移过程中恢复到初始状态,并使用当前位置作为新的起点进行重置。我希望,生产表将看到开发数据库中的这个新起点,并将其自身重新同步到开发状态。我想我已经在某处读到过生产数据库与开发数据库相匹配并自我更新。我相信在生产数据库中有一个迁移文件与开发数据库-that文件中的文件相匹配,显然是不同步的。
无论如何,我更改了Dev计算机中迁移目录的名称,并将其从项目中排除。然后,我在dev计算机上重新初始化表(使用本地数据库中的新数据库名称),并使用初始化数据重新加载。一切都奏效了。
现在,我遇到了一个新问题,我的生产数据库和开发数据库是不同的,并且我在dev计算机中的迁移设置为创建新文件,而处于生产状态的迁移是期待较旧的迁移。每次我尝试使用开发计算机更新产品数据库时,我都会得到一个错误消息,告诉我文件已经存在了--它们当然确实存在。
现在,生产数据库将启动,但不会运行,因为更新后的代码具有它所引用的新字段,而这些字段没有在生产数据库中创建。我猜,解决这个问题的唯一方法是手动进入并逐个同步字段。
问题1:有没有一种自动同步(使用迁移)生产数据库和开发数据库的方法,使它们与开发数据库相同?
问题2:考虑到上面的情况,用生产数据库重新设置混合的更好的方法是什么?
发布于 2015-01-22 16:24:10
我找到了一个解决方案。Red-Gate的人有一个很棒的SQL工具,叫做SQL Compare。它可以比较数据库文件结构,甚至只需单击一个按钮,就可以使它们完全相同。
但是,在使用它之前,请确保您只比较“表”,而不是包括“用户”和“角色”以及更多内容的所有内容。这是因为当您运行软件时,它会备份、删除和重新创建,如果角色或用户被删除,软件将无法再访问数据库,并且所有内容都将被删除!还有..。做个备份!(我在第一次尝试时就丢失了所有测试数据)
http://www.red-gate.com/products/sql-development/sql-compare/
(这不是针对Red-Gate公司的销售推广。我不认识他们,但他们的工具对我帮助很大--它是一个好工具,易于使用,而且14天免费!-我在这里列出它,是为了帮助其他任何人,我相信还有很多人,可能像我一样被困住了。)
2015年4月24日
好的。在同步这两个数据库以使它们看起来完全相同之后,还有更多的事情要做。
H120删除所有数据(您要清除它) ("__MigrationHistory“(主机))H221H122现在将所有数据从本地"__MigrationHistory“复制到托管的"__MigrationHistory”(将有您的一行,即您在上面创建的初始行“)
https://stackoverflow.com/questions/27704182
复制相似问题