我在~/.psqlrc文件中放什么来设置默认编辑器?
我要使用的编辑器 ( Textmate ) 位于/Users/username/bin/mate.
我在文档中找到了他们谈论它的地方,并尝试了几种语法变体,但似乎无法使其正常工作。
例如,这不起作用......
\set PSQL_EDITOR "/Users/username/bin/mate"
Run Code Online (Sandbox Code Playgroud)
在 psql 中,当我输入时,\e我得到...
sh: /usr/local/bin/mate: No such file or directory
sh: line 0: exec: /usr/local/bin/mate: cannot execute: No such file or directory
Run Code Online (Sandbox Code Playgroud) PostgreSQL在EC2机器上,现在我想更改用户的密码postgresRun Code Online (Sandbox Code Playgroud)$ sudo -u postgres psql psql (9.1.5) Type "help" for help. postgres=# ALTER USER postgres WITH PASSWORD 'newpasswd'; ALTER ROLE
Run Code Online (Sandbox Code Playgroud)$ psql -U postgres -W Password for user postgres: psql: FATAL: Peer authentication failed for user "postgres"
我的PostgreSQL版本是
$ psql --version
psql (PostgreSQL) 9.1.5
contains support for command-line editing
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
谢谢
更新
我进行了更改pg_hba.conf,这就是现在的样子
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE …Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法在 PL/pgSQL 中声明表类型的变量来保存查询结果?例如,我如何表达如下内容:
q1 = select * from foo;
q2 = select * from bar;
for t1 in q1:
for t2 in q2:
-- do something with t1 and t2
Run Code Online (Sandbox Code Playgroud)
我查看了 return next 构造,但它似乎只能处理返回值。
所述的PostgreSQL 9.4文档指出添加NOWAIT选项将SELECT FOR UPDATE当行不能被锁定时产生一个错误的装置:
要防止操作等待其他事务提交,请使用 NOWAIT 选项。使用 NOWAIT,如果无法立即锁定所选行,该语句将报告错误,而不是等待。
那究竟是什么错误?
由于这是一个可接受的条件,我希望我的 Java 代码检查此类预期错误,然后解决它。
我id serial PRIMARY KEY在 PostgreSQL 表中有一个列。id因为我删除了相应的行,所以缺少许多s。
现在我想通过重新启动序列并以保留id原始id顺序的方式重新分配s来“压缩”表。是否可以?
例子:
id | data
----+-------
1 | hello
2 | world
4 | foo
5 | bar
Run Code Online (Sandbox Code Playgroud)
id | data
----+-------
1 | hello
2 | world
3 | foo
4 | bar
Run Code Online (Sandbox Code Playgroud)
我尝试了 StackOverflow answer 中建议的内容,但没有奏效:
# alter sequence t_id_seq restart;
ALTER SEQUENCE
# update t set id=default;
ERROR: duplicate key value violates unique constraint t_pkey
DETAIL: Key …Run Code Online (Sandbox Code Playgroud) 我有一张桌子articles:
Table "articles"
Column | Type | Modifiers | Storage | Stats target | Description
----------------+-----------------------------+----------------------------------------------------+----------+--------------+-------------
id | integer | not null default nextval('articles_id_seq'::regclass) | plain | |
user_id | integer | | plain | |
title | character varying(255) | | extended | |
author | character varying(255) | | extended | |
body | text | default '--- [] +| extended | |
| | '::text | | |
created_at | timestamp without time zone | …Run Code Online (Sandbox Code Playgroud) postgresql performance datatypes postgresql-9.4 query-performance
我正在设置一个 postgres 服务器,它将是一个(主要是)只读工作负载。
我想允许我自己和同事按照我们认为合适的方式创建/删除索引,而不允许我们删除表或改变表。
我花了一些时间阅读授权/撤销文档以及角色文档页面,但似乎表所有者角色获得了这两种权力。
我发现的一件事是,据说,在表空间上授予创建允许创建索引,但它不起作用(注意,我没有创建任何其他表空间)。
具体来说,我试过:
mydb=# grant create on tablespace pg_default to bob;
GRANT
Run Code Online (Sandbox Code Playgroud)
...然后切换到鲍勃:
mydb=> create index on foo(a);
ERROR: must be owner of relation foo
Run Code Online (Sandbox Code Playgroud)
我也尝试让 bob 成为所有者,但是 bob 获得了删除表的权利,而且似乎无法撤销该特权。所以我要么两者兼而有之,要么什么都不做。
有任何想法吗?
为什么 PostgreSQL 返回 't' 和 'f' 而不是 TRUE 和 FALSE?
该文档本身的建议我们将布尔值或进行比较时使用的真与假,但选择从数据库中的值时,返回不同的价值观。
CREATE TABLE test1 (a boolean, b text);
INSERT INTO test1 VALUES (TRUE, 'sic est');
INSERT INTO test1 VALUES (FALSE, 'non est');
SELECT * FROM test1;
a | b
---+---------
t | sic est
f | non est
Run Code Online (Sandbox Code Playgroud)
这种行为有原因吗?PostgreSQL 社区有没有尝试过改变它?
在 ORDBMS 数据库中,我看到可以使用复杂类型:
create type name as( ...)
Run Code Online (Sandbox Code Playgroud)
我可以在创建新表时引用这些类型,例如:
create table example (row_name ref(name))
Run Code Online (Sandbox Code Playgroud)
如何在 PostgreSQL 中实现相同的目标?
我在 PostgreSQL 数据库中有一个大量使用的表(大约有 500 万行),我想在其中删除一列并回收该列使用的空间。
文档建议进行表重写ALTER TABLE以强制返回空间,但这在使用表时运行并不安全,并且会导致停机。是否有任何不需要停机的实用选项?我试图运行该pgcompact工具,但这并没有改变任何东西。
postgresql ×10
datatypes ×2
ddl ×2
disk-space ×1
locking ×1
performance ×1
permissions ×1
plpgsql ×1
primary-key ×1
psql ×1
role ×1
select ×1
sequence ×1
vacuum ×1