标签: drop-database

删除与 EF Core 一起使用的数据库

我需要以编程方式删除 EF 核心数据库。没问题吧?获取上下文,调用 ctx.Database.EnsureDeleted(),一切就绪。

除了......当数据库正在使用时,您正在使用连接池(这样做是有充分理由的),您可能会遇到无法删除数据库的情况。

回到 EF6 时代,我有一个自定义 DB 初始值设定项,它按如下方式覆盖 InitializeDatabase(将 DB 设置为单用户模式,以便其他连接不会干扰)

public override void InitializeDatabase(AudmDatabaseContext context)
    {
        context.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction
           , string.Format("ALTER DATABASE [{0}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE", context.Database.Connection.Database));
        base.InitializeDatabase(context);
    }
Run Code Online (Sandbox Code Playgroud)

现在我想知道..你如何使用 EF 核心 2.1 做到这一点(或其他让我获得相同效果的东西)?

drop-database entity-framework-core .net-core

5
推荐指数
0
解决办法
140
查看次数

PHP/MYSQL - 使用准备好的语句删除数据库

我想使用 PDO 删除数据库。

这种方法对我来说是最好的

function delete_db($database)
{
  $statement = $my_pdo_obj->prepare("DROP DATABASE IF EXISTS :database");
  $statement->bindParam(":database", $database);
  $statement->execute();
}
Run Code Online (Sandbox Code Playgroud)

但不幸的是,我收到了一个 PDOException,说我的绑定值 ($database) 附近存在语法错误:

致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在“?”附近使用的正确语法。在第 1' 行

所以我尝试按如下方式执行查询

function delete_db($database)
{
  $statement = $my_pdo_obj->exec("DROP DATABASE IF EXISTS " . $database);
}
Run Code Online (Sandbox Code Playgroud)

它有效。

我想知道为什么准备好的语句不起作用,以及第二个查询是否受到保护。

提前感谢您的想法!

php pdo drop-database

3
推荐指数
1
解决办法
2756
查看次数

当存在活动连接时删除数据库

我正在尝试编写数据库备份脚本,部分流程是我需要删除数据库,然后从备份重新创建数据库。

当存在到数据库的连接时,我收到如下失败消息:

DETAIL: There are 2 other sessions using the database.

我一直在寻找一种方法来忽略此问题或在删除数据库之前终止连接。我正在尝试使用下面的查询,但它似乎实际上不允许我在运行后删除数据库。

-- Drop connections
\set database_name `echo $DB_NAME`

SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = ':database_name'
AND pid <> pg_backend_pid();
Run Code Online (Sandbox Code Playgroud)

我从 SO 帖子中获取了查询,该帖子似乎表明可以使用它,是否有更可靠的方法来执行此操作,或者无论是否存在活动连接都强制删除数据库?

postgresql database-connection drop-database postgresql-9.6

3
推荐指数
1
解决办法
4332
查看次数

为什么我无法删除 postgres 数据库

我正在尝试删除 postgres 数据库。但我总是得到一个

还有 1 个其他会话正在使用该数据库

错误。

我尝试使用此命令停止所有会话

select pg_terminate_backend(pid) from pg_stat_activity where datname='my_database';
Run Code Online (Sandbox Code Playgroud)

这是结果

pg_terminate_backend
----------------------
(0 rows)
Run Code Online (Sandbox Code Playgroud)

然后我使用了这个命令

DROP DATABASE my_database;
Run Code Online (Sandbox Code Playgroud)

这是整个错误信息

ERROR:  database "my_database" is being accessed by other users
DETAIL:  There is 1 other session using the database.
Run Code Online (Sandbox Code Playgroud)

我正在使用 postgres 12。

sql postgresql drop-database

3
推荐指数
1
解决办法
539
查看次数

使ADO.NET(和EntityFramework)发布数据库

我正在创建和删除数据库以进行一些集成测试.我正在ADO.NET级别进行所有数据库管理.对于我正在使用实体框架的测试,因为实体是我正在测试的一部分.问题是我这样做之后:

using (ProjectEntities db = new ProjectEntities(cs)) {
}
Run Code Online (Sandbox Code Playgroud)

我不能再删除数据库了.它说它正在使用中.如何释放它以便它可以被删除?

我实际上在ADO.NET级别遇到了同样的问题,我做的是:

new SqlCommand("USE [master]", DatabaseConnection).ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

但我不确定如何对Entity Framework连接执行具有相同效果的操作.我试图手动处理db对象(虽然using子句应该保证),我也尝试手动关闭db.Connection.没有帮助.如果我可以直接运行SQL没有实体框架连接,我相信我能够做到这一点.或许还有另一种方式?

c# connection entity-framework drop-database

2
推荐指数
1
解决办法
713
查看次数

Mongo数据库不存在但显示在连接中

我删除了名为'test'的MongoDB数据库,但是当我连接到mongod时,它会在连接中显示它.请参阅下面的代码.你能帮我理解发生了什么吗?这是一个错误还是我遗失了什么?为什么使用show dbs命令时测试不在数据库列表中.谢谢您的帮助.

Microsoft Windows [版本6.1.7601]版权所有(c)2009 Microsoft Corporation.版权所有.

C:\用户\我> C:\ mongodb的\ BIN \蒙戈

MongoDB shell版本:2.4.8

连接到:测试

D b

测试

显示dbs

本地0.078125GB

>

show mongodb drop-database

1
推荐指数
1
解决办法
1451
查看次数