几周前我删除了一个数据库,但它仍然显示为\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) 我在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) 我想弄清楚如何在一个 sql 脚本中删除 PostgreSQL 上的多个数据库。我最好需要它在pgAdmin控制台中执行时和在psql命令行工具中使用时都能工作。当我做:
DROP DATABASE db1;
DROP DATABASE db2;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
无法从函数或多命令字符串执行 DROP DATABASE
有没有办法解决这个问题?即,有没有办法单独运行每个命令(比如在 MSSQL 上使用“GO”语句时),或者其他一些明智的方法来轻松删除多个数据库?我在开发过程中需要此功能用于维护脚本。
我在服务器上使用 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 plpgsql和syntax error at or near。此外,我不确定这是否能达到我想要的效果。pg_dump 和 psql 命令有很多可选标志,我不知道应该使用哪些。(我已经尝试了多种标志组合,但到目前为止没有任何效果。)
注意:当我尝试上述命令时,我的临时数据库已经存在。
如何将生产数据移至暂存数据库?
我有一个aarons_db在 ubuntu linux 中命名的 postgres 数据库。pnt我正在尝试删除名为inside的表aarons_db。为此,我使用以下命令:
DROP TABLE pnt
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎并没有删除表。我最好的猜测是我没有正确配置某种管理员权限。下面显示了数据库以及用于尝试删除表的命令。
是什么阻止我掉落桌子pnt?
这里有一个类似的问题,尽管用户遇到了缓存错误,但在我的情况下没有发生。
当在 psql 中编写跨多行的查询时,有时我意识到我在之前编写的其中一行中犯了错误。在下面的示例中,
select * form (
etc, etc...
Run Code Online (Sandbox Code Playgroud)
第一行有一个错误,但我已经在第二行写了。如何返回并编辑第一行(并将“form”更改为“from”)?我一直无法做到这一点。
因为一个错误而必须重写所有内容是非常不方便的(特别是对于长的多行查询)。
我正在从命令行运行 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)
但我得到了一个错误,如:
Run Code Online (Sandbox Code Playgroud)syntax error at or near ':'
一旦我从:now_utc变为now(),脚本就很好,它就像一个魅力。
问题是如何将变量从命令行传递给 PL/pgSQL 代码?
考虑一个.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在非交互模式下运行我的文件,只显示结果并退出脚本?
我的表列定义了 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)
有什么技巧吗?
我对以下输出有疑问:
[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)
以下两条消息代表什么,为什么?我正在询问的消息:
psql: /usr/pgsql-11/lib/libpq.so.5: no version information available (required by psql)psql (11.7, server 11.8)-顺便说一句,这个psql --version命令我获得以下的输出:
psql (PostgreSQL) 11.8(必须安装才能执行的命令,比如PostgreSQL服务器版本11.7\dt和\l)......并输出如下:Run Code Online (Sandbox Code Playgroud)postgres=# select * FROM version(); version -------------------------------------------------------------------------------------------------------- PostgreSQL 11.8 on x86_64-pc-linux-gnu, …