标签: psql

删除的数据库仍然显示但导致错误 PostgreSQL

几周前我删除了一个数据库,但它仍然显示为\l. 我试过使用DROP DATABASE mixmobi_master;,第一次它给了我一条确认消息,但mixmobi_master仍然出现\l. 现在,当我再次尝试该命令时,我得到:

template1=# \l

template1=# drop database mixmobi_master;
ERROR:  database "mixmobi_master" does not exist

template1=# \l
                                 List of databases
      Name           | Owner | Encoding |   Collate   |    Ctype    | Access privileges 
-------------------------+-------+----------+-------------+-------------+-------------------
biterator_development   | kyle  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
mixmobi_master          | kyle  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
plantjotter_development | kyle  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
postgres                | atmos | UTF8     | en_US.UTF-8 …
Run Code Online (Sandbox Code Playgroud)

postgresql psql

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

跨越多个连续 psql 会话的单个事务

我在Ubuntu 10.04 Lucid Lynx上运行PostgreSQL 8.4数据库服务器和psql终端前端,并希望在多个连续的 psql 会话中跨越单个事务。

当我使用 psql 连接到我的数据库时,会建立一个新连接,并为此连接创建一个服务器后端进程。当我断开连接时,连接被释放并且后端进程终止。一个(非 XA*)事务被绑定到一个连接的范围内,所以显然没有直接的方法可以将单个事务跨越多个 psql 会话。

我想要实现的是以下命令序列可以在单个事务中运行,因此在每次调用时返回相同的事务时间戳now()

tscho@test:~$ sudo -u postgres psql -p 5433 --no-align --tuples-only -c "select now()"
2012-02-17 21:25:07.027056+01
tscho@test:~$ sudo -u postgres psql -p 5433 --no-align --tuples-only -c "select now()"
2012-02-17 21:25:09.487601+01
Run Code Online (Sandbox Code Playgroud)

数据库日志:

2012-02-17 21:25:07 CET 0- LOG:  connection received: host=[local]
2012-02-17 21:25:07 CET 0- LOG:  connection authorized: user=postgres database=postgres
2012-02-17 21:25:07 CET 0-2/0 LOG:  duration: 0.366 ms  statement: select now()
2012-02-17 21:25:07 …
Run Code Online (Sandbox Code Playgroud)

postgresql psql

5
推荐指数
2
解决办法
3578
查看次数

在一个脚本中删除多个数据库

我想弄清楚如何在一个 sql 脚本中删除 PostgreSQL 上的多个数据库。我最好需要它在pgAdmin控制台中执行时和在psql命令行工具中使用时都能工作。当我做:

DROP DATABASE db1;
DROP DATABASE db2;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

无法从函数或多命令字符串执行 DROP DATABASE

有没有办法解决这个问题?即,有没有办法单独运行每个命令(比如在 MSSQL 上使用“GO”语句时),或者其他一些明智的方法来轻松删除多个数据库?我在开发过程中需要此功能用于维护脚本。

postgresql pgadmin psql scripting

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

使用 Postgresql 中的生产数据更新暂存数据

我在服务器上使用 PostgreSQL(版本 9.3),并且希望使用生产实例数据库中的数据更新暂存实例数据库中的数据。每个数据库都由不同的角色控制,我想在传输中保持它们的权限分开。

我尝试按照文档操作并使用单独的用户(有权访问相应的 PostgreSQL 角色)运行这些命令:

staging-user: pg_dump production_db > prod_db_file
production-user: psql --single-transaction staging_db < prod_db_file
Run Code Online (Sandbox Code Playgroud)

但我有几个错误:must be owner of extension plpgsqlsyntax error at or near。此外,我不确定这是否能达到我想要的效果。pg_dump 和 psql 命令有很多可选标志,我不知道应该使用哪些。(我已经尝试了多种标志组合,但到目前为止没有任何效果。)

注意:当我尝试上述命令时,我的临时数据库已经存在。

如何将生产数据移至暂存数据库?

postgresql psql postgresql-9.3 pg-dump

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

是什么阻止 DROP TABLE 删除 Postgres 表?

我有一个aarons_db在 ubuntu linux 中命名的 postgres 数据库。pnt我正在尝试删除名为inside的表aarons_db。为此,我使用以下命令:

DROP TABLE pnt
Run Code Online (Sandbox Code Playgroud)

不幸的是,这似乎并没有删除表。我最好的猜测是我没有正确配置某种管理员权限。下面显示了数据库以及用于尝试删除表的命令。

是什么阻止我掉落桌子pnt

这里有一个类似的问题,尽管用户遇到了缓存错误,但在我的情况下没有发生。

在此输入图像描述

postgresql psql drop-table

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

psql 多行命令:如何编辑前面的行?

当在 psql 中编写跨多行的查询时,有时我意识到我在之前编写的其中一行中犯了错误。在下面的示例中,

select * form (
etc, etc...
Run Code Online (Sandbox Code Playgroud)

第一行有一个错误,但我已经在第二行写了。如何返回并编辑第一行(并将“form”更改为“from”)?我一直无法做到这一点。

因为一个错误而必须重写所有内容是非常不方便的(特别是对于长的多行查询)。

postgresql psql

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

如何从命令行将变量传递给 PL/pgSQL 代码?

我正在从命令行运行 psql 脚本,其中的变量类似于:

psql ...... -v now_utc=$NOW_UTC 
Run Code Online (Sandbox Code Playgroud)

然后我想在我的脚本中使用它,例如:

$$
DECLARE
   _now_date timestamp := :now_utc;
BEGIN
  -- do something
END
$$
Run Code Online (Sandbox Code Playgroud)

但我得到了一个错误,如:

syntax error at or near ':'
Run Code Online (Sandbox Code Playgroud)

一旦我从:now_utc变为now(),脚本就很好,它就像一个魅力。

问题是如何将变量从命令行传递给 PL/pgSQL 代码?

postgresql psql plpgsql string-manipulation

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

psql:以批处理模式运行命令

考虑一个.sql包含一些选择和更新的文件。我想使用该psql实用程序从脚本运行此文件:

psql -h whatever.rds.amazonaws.com -U user dbname -f commands.sql
Run Code Online (Sandbox Code Playgroud)

问题是我得到了一个带有查询结果的交互式屏幕和一个(0 rows)(END),需要按下esc才能返回正常外壳。

我曾尝试使用--echo-all和/或--single-transaction遵循psql 手册,但没有成功。

如何sql在非交互模式下运行我的文件,只显示结果并退出脚本?

psql postgresql-9.3

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

从文件复制:错误:整数输入语法无效:“\N”

我的表列定义了 intcol 整数;没有 NOT NULL 约束。在加载文件中,大多数值是整数,但有一些是空值,如复制手册所建议的那样标有 '\N' 默认值。复制命令可以将'\N' 转换为表中的空值吗?我也尝试过使用 null 'NA'。收到类似的错误信息。

ERROR:  invalid input syntax for integer: "\N"
CONTEXT:  COPY table_name, line 111, column position3: "\N"
Run Code Online (Sandbox Code Playgroud)

有什么技巧吗?

postgresql psql

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

“psql:/usr/pgsql-11/lib/libpq.so.5:没有可用的版本信息(psql需要)”实际上是什么意思?

我对以下输出有疑问:

[nikola@192 ~] $ sudo su - postgres
[postgres@192 ~] $ psql dvdrental postgres
psql: /usr/pgsql-11/lib/libpq.so.5: no version information available (required by psql)
psql: /usr/pgsql-11/lib/libpq.so.5: no version information available (required by psql)
psql (11.7, server 11.8)
Type "help" for help.

dvdrental=# 
Run Code Online (Sandbox Code Playgroud)

以下两条消息代表什么,为什么?我正在询问的消息:

  1. psql: /usr/pgsql-11/lib/libpq.so.5: no version information available (required by psql)
  2. psql (11.7, server 11.8)-顺便说一句,这个psql --version命令我获得以下的输出: psql (PostgreSQL) 11.8必须安装才能执行的命令,比如PostgreSQL服务器版本11.7\dt\l)......并输出如下:
postgres=# select * FROM version();
                                                version                                                 
--------------------------------------------------------------------------------------------------------
 PostgreSQL 11.8 on x86_64-pc-linux-gnu, …
Run Code Online (Sandbox Code Playgroud)

postgresql psql scripting bash

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