有一个字段show,它是booleanpostgesql 中的一种类型。
我想编写一个 sql 来更新该表,以切换 show 的值。如果是true,它就变成了false,如果是false,它就变成了true。
是否可以?
我有以下表格和索引定义:
CREATE TABLE munkalap (
munkalap_id serial PRIMARY KEY,
...
);
CREATE TABLE munkalap_lepes (
munkalap_lepes_id serial PRIMARY KEY,
munkalap_id integer REFERENCES munkalap (munkalap_id),
...
);
CREATE INDEX idx_munkalap_lepes_munkalap_id ON munkalap_lepes (munkalap_id);
Run Code Online (Sandbox Code Playgroud)
为什么在以下查询中没有使用 munkalap_id 上的任何索引?
EXPLAIN ANALYZE SELECT ml.* FROM munkalap m JOIN munkalap_lepes ml USING (munkalap_id);
QUERY PLAN
Hash Join (cost=119.17..2050.88 rows=38046 width=214) (actual time=0.824..18.011 rows=38046 loops=1)
Hash Cond: (ml.munkalap_id = m.munkalap_id)
-> Seq Scan on munkalap_lepes ml (cost=0.00..1313.46 rows=38046 width=214) (actual time=0.005..4.574 rows=38046 loops=1)
-> Hash (cost=78.52..78.52 rows=3252 …Run Code Online (Sandbox Code Playgroud) 我一直在为 Postgres 9.1 进行热备份工作一段时间,但遇到了一个一致的问题。在从服务器上重新启动 Postgres 后,pg_log 目录下的 pgstartup 日志文件和每日日志文件读取没有错误。但是,当我尝试使用 psql 命令进入数据库时,出现错误:
致命:数据库系统正在启动。
recovery.conf 文件也不会转为 recovery.done。我已经广泛研究了这个错误并始终找到相同的响应:在我尝试重新启动 Postgres 之前,数据库没有完全关闭。我重新启动 Postgres 的唯一方法是通过service postgresql-9.1 restartor/etc/init.d/postgresql-9.1 restart命令。收到此错误后,我终止了所有进程并再次尝试重新启动数据库,但仍然收到相同的错误。我不知道从哪里开始以及如何解决这个问题。以下是我为完成热备份所做的确切过程。
主服务器配置:
pg_hba.conf,添加了以下行:
主机复制 postgres IPAddressOfSlaveServer 信任
postgresql.conf:
wal_level = hot_standby max_wal_senders = 5 听地址 = '*' 端口 = 5432 max_wal_senders = 5 wal_keep_segments = 32
从服务器配置:
postgresql.conf:
hot_standby = 开
恢复.conf:
待机模式 = 开 primary_conninfo = host=IPAddressOfMasterServer 端口 = 5432 用户 = postgres restore_command = 'cp /var/lib/pgsql/9.1/data/pg_xlog/%f "%p"'
配置两台服务器后
我在主服务器上更改为 postgres 用户并运行命令:
psql -c …
我刚刚查看了PostgreSQL的宣传页面,我发现了这件小艺术品:

它是“Turtle Style” PostgreSQL 标志。这是多少岁了,PostgreSQL 是否曾经正式使用乌龟而不是大象?这里有什么故事?
我已经在我的 Windows 机器上安装了 PostgreSQL 进行开发。现在好久没用了,忘记了用户密码postgres(PostgreSQL默认admin用户)。如何postgres在 Windows 上重置PostgreSQL的密码?
我遵循 Milen 的建议,但在尝试重新加载配置文件时收到此消息:
C:\Program Files\PostgreSQL\9.1\data>pg_ctl reload -D .
pg_ctl: could not send reload signal (PID: 3396): Operation not permitted
Run Code Online (Sandbox Code Playgroud)
在 Windows 中有一个菜单选项“重新加载配置”效果更好,如下所示:

在 PostgreSQL 9.2.2(Windows 32 位)下,我有一个pg_restore命令可以系统地导致有关检查点频率的日志警告,例如:
LOG: checkpoints are occurring too frequently (17 seconds apart)
HINT: Consider increasing the configuration parameter "checkpoint_segments".
Run Code Online (Sandbox Code Playgroud)
该数据库大小约为 3.3 Gb,具有 112 个表/160 个视图,并在大约 14 分钟内恢复。
在 a 期间发生这种情况是否正常pg_restore?
我有以下表格,
CREATE TABLE users (id int PRIMARY KEY);
-- already exists with data
CREATE TABLE message ();
Run Code Online (Sandbox Code Playgroud)
我如何改变messages表格,
sender被添加到其中sender引用users表的外键在哪里这没有用
# ALTER TABLE message ADD FOREIGN KEY (sender) REFERENCES users;
ERROR: column "sender" referenced in foreign key constraint does not exist
Run Code Online (Sandbox Code Playgroud)
这个语句也不会创建列吗?
在 PostgreSQL 9.5 中,给定一个使用以下方法创建的简单表:
create table tbl (
id serial primary key,
val integer
);
Run Code Online (Sandbox Code Playgroud)
我运行 SQL 来插入一个值,然后在同一个语句中更新它:
WITH newval AS (
INSERT INTO tbl(val) VALUES (1) RETURNING id
) UPDATE tbl SET val=2 FROM newval WHERE tbl.id=newval.id;
Run Code Online (Sandbox Code Playgroud)
结果是 UPDATE 被忽略:
testdb=> select * from tbl;
????????????
? id ? val ?
????????????
? 1 ? 1 ?
????????????
Run Code Online (Sandbox Code Playgroud)
为什么是这样?这个限制是 SQL 标准的一部分(即存在于其他数据库中),还是特定于 PostgreSQL 可能在未来修复的部分?在使用查询文件说,多次更新不支持,但没有提到INSERT和UPDATE。
我已经从带有--data-only和--column-inserts标志的生产服务器创建了一个新的数据库转储,因此在登台服务器上执行还原时,我只有一堆插入语句来插入数据。
pg_dump -h localhost -U adminuser --data-only --column-inserts maindb > maindb.sql
Run Code Online (Sandbox Code Playgroud)
在从生产转储恢复数据之前,如何首先删除登台服务器数据库中的所有数据?
我只想删除所有数据,这样我就不必删除和创建数据库和所有这些东西。我只想删除数据并插入新数据。
由于多种原因,我无法选择删除和创建数据库。我将不得不删除所有数据并仅插入,因此无论需要找到如何执行此操作,我都愿意去做,但显然需要帮助才能开始。
我还需要自动化这个过程。将自动“从生产数据库转储数据”,然后“删除暂存数据库上的数据”,然后“将数据恢复到暂存数据库”。我只需要“删除暂存数据库上的数据”部分的帮助。
我在 PostgreSQL 9.5.2 上运行
前段时间我创建了一个名为user1(PostgreSQL 9.4.9)的 PostgreSQL 用户。
我想放弃这个用户。所以我首先撤销对表、序列、函数、默认权限和所有权的所有权限:
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON SEQUENCES FROM user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON TABLES FROM user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM user1;
REVOKE ALL ON ALL SEQUENCES IN SCHEMA public FROM user1;
REVOKE ALL ON ALL TABLES IN SCHEMA public FROM user1;
REVOKE ALL ON ALL FUNCTIONS IN SCHEMA public FROM user1;
REASSIGN OWNED BY user1 TO postgres;
Run Code Online (Sandbox Code Playgroud)
但是,似乎有一个对象在 …
postgresql ×10
alter-table ×1
backup ×1
checkpoint ×1
cte ×1
foreign-key ×1
index ×1
join ×1
performance ×1
permissions ×1
pg-dump ×1
primary-key ×1
restore ×1
windows ×1