我正试图让代码在表中插入一行名为thoughtentries。它在public模式中。当使用psql连接到数据库时,我能够运行该命令:
INSERT INTO thoughtentries VALUES('12/17/2016 14:10', 'hi');
第一列为character型,长17。第二列是text类型。
当我尝试使用上面的相同命令插入代码时,我的日志中会出现错误:
ERROR: relation "thoughtentries" does not exist at character 13
STATEMENT: INSERT INTO thoughtentries VALUES('12/17/2016 14:11', 'hi');
我正在使用pgpg-format格式化命令。下面是我的代码:

client.connect(function (err) {
  if (err) throw err
  app.listen(3000, function () {
    console.log('listening on 3000')
  })
  var textToDB = format('INSERT INTO thoughtentries VALUES(%s, %s);', timestamp, "'hi'")
  client.query(textToDB, function (err, result) {
    if (err) {
      console.log(err)
    }
    console.log(result)
    client.end(function (err) {
      if (err) throw err
    })
  })
})

我该怎么解决这个问题?

最佳答案

您是否验证了表实际上是在public模式中创建的?

SELECT *
FROM   information_schema.tables
WHERE  table_name = 'thoughtentries';

一旦你证实了这一点,我看到还有两种可能的解释:
您错误地连接到另一个数据库。在同一会话中,验证:
select current_database();

search_path设置不包括public架构。如果是这种情况,您可以使用schema限定要修复的表:public.thoughtentries
How does the search_path influence identifier resolution and the "current schema"
旁白:将时间戳保存为数据类型timestamp,而不是character(17)
实际上,根本不用character(n)
Any downsides of using data type "text" for storing strings?

10-04 16:33