如何使用Node.js在Postgres SQL中删除数据库?

3
我正在尝试使用 node.js postgres sql 删除名为 test 的数据库,但没有成功。
var express = require('express');
var app = express();
var pg = require('pg');
var pgp = require('pg-promise')();

// Connect to PostgreSQL database
var connectionString = process.env.DATABASE_URL || 'postgres://postgres:pass123@localhost:5432/test';
var db = pgp(connectionString);
db.connect();


  db.query("DROP DATABASE test").then(function()
  {
    //createDatabases(db);
  }).catch(function(err)
  {
    console.log(err);
  });

但是我遇到了一个错误。
{ [error: cannot drop the currently open database]
  name: 'error',
  length: 87,
  severity: 'ERROR',
  code: '55006',
  detail: undefined,
  hint: undefined,
  position: undefined,
  internalPosition: undefined,
  internalQuery: undefined,
  where: undefined,
  schema: undefined,
  table: undefined,
  column: undefined,
  dataType: undefined,
  constraint: undefined,
  file: 'dbcommands.c',
  line: '834',
  routine: 'dropdb' }

有人知道如何解决这个问题吗?

谢谢


你不应该在那里调用 db.connect();。而且你也不应该在那里包含 pg - vitaly-t
1个回答

6

正如错误提示所说,您不能连接到要删除的数据库。您可以连接到其他数据库来执行此操作,或使用类似pgtools的工具。

var pgtools = require('pgtools');

// This can also be a connection string
// (in which case the database part is ignored and replaced with postgres)

const config = {
  user: 'postgres',
  password: 'some pass',
  port: 5432,
  host: 'localhost'
}


pgtools.dropdb(config, 'test-db', function (err, res) {
  if (err) {
    console.error(err);
    process.exit(-1);
  }
  console.log(res);
});

1
感谢您发布这篇文章,我刚刚确认它非常有效,在win10 git bash上运行得很好! - vapurrmaid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接