如何使用 pg-promise 删除然后重新创建数据库?

How to drop and then recreate database with pg-promise?

我希望能够通过代码重置我的数据库,方法是先删除数据库,然后重新创建它,然后重新创建所有表,然后用数据重新填充它。

但如果我只是这样做:

await db.any('DROP DATABASE ',cn.database)

我收到以下错误:

error: syntax error at or near "'testdb'"

很可能是因为我正在尝试删除当前连接的数据库。

那么有没有办法在运行时使用 pg-promise 删除或重置数据库?

在 SQL 语法中,数据库名称是标识符,而不是值文字。您需要使用 SQL Name filter:

await db.none('DROP DATABASE ~', cn.database);
// or
await db.none('DROP DATABASE :name', cn.database);
// or
await db.none('DROP DATABASE ${database:name}', cn);