我正在关注this guide,说明使用Entity Framework核心的代码优先方法。迁移功能正常,直到某些时候我删除了我的.mdf文件。从那时起,执行Update-Database
(以应用我的迁移)会引发以下错误:
Database 'DatabaseName' already exists. Choose a different database name.
这个数据库到底在哪里?如何永久删除它?
根据this的答案,我需要从Sql Server分离我的数据库,但我现在不知道该怎么做。在Sql Server Management工作室中,如果我执行sp_detach_db DatabaseName
,则会抛出错误The database 'DatabaseName' does not exist. Supply a valid database name.
提前致谢。
更新
如果我在SQL Server Management Studio中附加了数据库,并且执行database already exists
命令,我发现我还可以重现此Update-Database
错误。关闭管理工作室后,迁移将应用,不会出现此错误。对我来说很困惑。
答案 0 :(得分:6)
请查看SQL Server对象资源管理器(Visual Studio - > View - > SQL Server对象资源管理器)。如果它包含'DatabaseName'数据库,请尝试删除它。
答案 1 :(得分:2)
似乎LocalDB实例仍在后台运行。在控制台中执行以下命令以停止和删除实例。
sqllocaldb stop
sqllocaldb delete
Update-Database命令现在应该没有问题。
答案 2 :(得分:0)
它可能是本地数据库。尝试连接到本地数据库
(LocalDb)\MSSQLLocalDB
看看数据库是否位于那里。您可能需要从SSMS中删除它
答案 3 :(得分:0)
尝试修改' xxxxx-20170604092712
'的数字代码在 Web.config 文件中,
然后'更新 - 数据库'再次。这对我有用。
答案 4 :(得分:0)
如果使用SQL创建数据库(意味着DB已存在),请将行DROP DATABASE [databaseName]
放在文件开头 databaseName.sql
这将删除整个数据库及其定义(模式),现在您可以从创建新数据库开始。
答案 5 :(得分:0)
另一种猜测..如果您恢复了数据库,那么您的用户登录将不再工作,因为孤儿。尝试删除用户并重新创建它。如果您的迁移无法访问数据库,您将收到相同的错误。
答案 6 :(得分:0)
我将我的数据库恢复到另一台服务器,为了解决这个问题,我必须从安全下的数据库中删除以前的用户并重新创建他们