【发布时间】:2021-08-11 11:41:15
【问题描述】:
我希望能够从代码中重置我的数据库,方法是先删除数据库,然后重新创建它,然后重新创建所有表,然后用数据重新填充它。
但如果我只是这样做:
await db.any('DROP DATABASE $1',cn.database)
我收到以下错误:
error: syntax error at or near "'testdb'"
很可能是因为我试图删除我当前连接的数据库。
那么有没有办法在运行时使用 pg-promise 删除或重置数据库?
【问题讨论】:
-
好吧,很明显连接到不同的数据库。
-
“因为我正在尝试删除我当前连接的数据库” - 不,这是语法错误,而不是执行错误。
-
@RichardHuxton 这是否意味着我需要为每个服务器添加一个空的回避数据库?似乎是一种不好的做法。我不能像在命令行上那样以某种方式存在当前的数据库吗?
-
@vitaly-t 删除所有表需要知道有哪些表,并且经常会错过函数、序列、类型、自定义运算符等等。我发现一个很好的折衷方案是删除并重新创建应用程序正在使用的模式,这会捕获大多数数据库对象(但不包括扩展、事件、排序规则、复制和其他数据库级配置)
-
@user2741831 是的,对不起,它默认为数据库
postgres。或者准确地说,它使用与用户名相同的数据库 - 请参阅here。
标签: node.js postgresql pg-promise