Questions tagged «postgresql-9.4»

PostgreSQL 9.4版

1
日期范围的唯一性约束
考虑具有prices以下列的表: id integer primary key product_id integer -- foreign key start_date date not null end_date date not null quantity integer price numeric 我希望数据库执行以下规则,即在日期范围内(通过where <date> BETWEEN start_date AND end_date)某种产品在特定数量上只能有一个价格。 这种基于范围的约束可行吗?

2
ALTER TABLE上的数据库“冻结”
今天早上,我们的生产环境只是冻结*一段时间,当更改表格时,实际上添加了一列。 令人反感的SQL:ALTER TABLE cliente ADD COLUMN topicos character varying(20)[]; *登录到我们的系统需要从同一张表中进行选择,因此在更改表期间没有人可以登录。实际上,我们必须终止进程以使系统恢复正常运行。 表结构: CREATE TABLE cliente ( rut character varying(30) NOT NULL, nombre character varying(150) NOT NULL, razon_social character varying(150) NOT NULL, direccion character varying(200) NOT NULL, comuna character varying(100) NOT NULL, ciudad character varying(100) NOT NULL, codigo_pais character varying(3) NOT NULL, …


5
如何检查PostgreSQL服务器的SSL证书?
假设有一个正在运行的PostgreSQL服务器并且已启用SSL。使用“标准” Linux和PostgreSQL工具,如何检查其SSL证书? 我希望输出的结果类似于您从运行中得到的结果openssl x509 -text ...。而且我希望得到一两个命令行的答案,因此我不必求助于运行数据包嗅探器。 我无权访问PostgreSQL服务器,因此无法直接查看其配置文件。 我没有超级用户登录名,因此无法获取ssl_cert_file设置的值,然后pg_read_file就不能对其进行设置。 使用openssl s_client -connect ...不起作用,因为PostgreSQL似乎不想立即进行SSL握手。 通过快速浏览psql文档,我找不到命令行参数,该参数使它在启动时显示该信息。(尽管它确实向我显示了某些密码信息。)

1
获得客户的百分之十和百分之九十
我有一个包含客户和得分的表(基于不同的因素,在这种情况下不相关;一个客户可以有多个得分),看起来像这样: customer_id | score | score_giver_id ==================================== 1 | 100 | 1 1 | 102 | 1 1 | 101 | 1 1 | 140 | 1 2 | 131 | 3 1 | 44 | 1 3 | 223 | 1 3 | 1 | 2 3 | 201 …

3
计算系列中每个日期覆盖多少日期范围的最快方法
我有一个表(在PostgreSQL 9.4中)看起来像这样: CREATE TABLE dates_ranges (kind int, start_date date, end_date date); INSERT INTO dates_ranges VALUES (1, '2018-01-01', '2018-01-31'), (1, '2018-01-01', '2018-01-05'), (1, '2018-01-03', '2018-01-06'), (2, '2018-01-01', '2018-01-01'), (2, '2018-01-01', '2018-01-02'), (3, '2018-01-02', '2018-01-08'), (3, '2018-01-05', '2018-01-10'); 现在,我想为给定的日期和每种类型计算dates_ranges每个日期落入多少行。零可能会省略。 所需结果: +-------+------------+----+ | kind | as_of_date | n | +-------+------------+----+ | 1 | …

2
psql:严重:用户的对等身份验证失败
我刚刚在Ubuntu 15.10上安装了PostgreSQL 9.4。 我创建了一个用户 createuser -P myuser 我创建了一个数据库 createdb -O myuser mydatabase 我编辑pg_hba.conf并添加了local mydatabase myuser md5 我用重新启动了PostgreSQL sudo service postgresql restart 用户myuser仅是PostgresSQL用户,在Ubuntu上没有用户帐户。 当我尝试使用连接数据库psql -W mydatabase myuser时失败psql: FATAL: Peer authentication failed for user "myuser"。 PostgreSQL正在运行… ● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since …

2
SELECT和WHERE子句中的功能相同
初学者问题: f(x, y)我的数据库表中的x和y两列都有一个昂贵的函数。 我想执行一个查询,该查询将函数的结果作为列提供给我,并对其施加约束,例如 SELECT *, f(x, y) AS func FROM table_name WHERE func < 10; 但是,这不起作用,所以我将不得不写一些类似的东西 SELECT *, f(x, y) AS func FROM table_name WHERE f(x, y) < 10; 这会运行两次昂贵的功能吗?最好的方法是什么?

1
在pg_dump定位到另一台机器的过程中,拒绝创建“ pg_catalog.tablename”的权限
我正在尝试将某些表从9.5 beta 2转储到9.4.4服务器。我使用的命令的形式是相当标准的: pg_dump -t table dbname | psql -h hostname -d dbname 我正在使用Postgres用户,我意识到这可能并不理想,但是因为这两个都是我仅使用的dev数据处理框,所以与随后的错误有关。最初,我得到了错误 错误:无法识别的配置参数“ row_security” 这是预期的,因为此功能是9.5中的新增功能,是的,我意识到不建议在不同的Postgres版本之间使用pg_dump,但是,令人遗憾的是,由于我遇到了一个非常模糊的错误,并且需要移动一个大的错误,这是不可避免的一次静态数据量。 因此,使用此可怕的技巧来删除row_security错误,然后在第一个错误上启用stop: pg_dump -t tablemame dbname |sed 's/SET row_security = off;//'| psql -v ON_ERROR_STOP=1 -h hostname -d dbname 我现在得到: 错误:拒绝创建“ pg_catalog.tablename”的权限详细信息:当前不允许修改系统目录 尽管可能不希望使用Postgres用户/角色,但我的理解是应该没有这种性质的权限问题。对于任何建议,我都持开放态度,因为这是一次性操作,并且它们是未连接到任何实时服务的数据处理开发箱,因此权宜于优先于理想的公司数据访问策略。话虽如此,最好了解如何正确执行此操作,并在将来避免这样做。


1
PostgreSQL:SSL SYSCALL错误:检测到EOF
首先,我已经搜索并找到了与该错误有关的几篇文章,并且其中大多数都指向RAM问题或SSL问题,我尝试通过在命令行中添加sslmode = disabled来克服SSL的可能性: psql -U waypoint -d waypoint -W -c "alter table telemetria_data.historico alter clase type smallint, alter valor type real[], alter power type smallint, alter voltaje type real;" -h localhost -v sslmode=disable 但是出现了相同的消息: SSL SYSCALL error: EOF detected connection to server was lost 关于可能的内存问题,我不知道如何解决它。 数据结构就是此问题中描述的结构,您可能会发现这将是一个运行时间很长的查询,可以完成所有继承表上的完整alter table。 作业系统: Linux ip-10-1-0-9 …


1
pgAdmin在任何远程操作上都非常慢
我从本地pgAdmin远程连接到我们的开发服务器运行此查询: select * from users order by random() limit 1; 它挂了17秒并显示 Total query runtime: 148 ms. 1 row retrieved. 它也挂在任何操作上:甚至右键单击表格。 之后,我通过RDP连接并在相同的pgAdmin版本中运行相同的查询,并立即使用显示结果query time: 32 ms。 然后我再次从本地pgAdmin运行查询: Total query runtime: 337 ms. 1 row retrieved. 我向服务器ping了130毫秒。连接速度应该足够,因为我可以在那里通过FTP上传文件。 使用本地psql运行相同的查询会在几秒钟内完成,并包括连接时间。 我的本地pgAdmin中带有本地数据库副本的相同查询也立即完成。 pgAdmin版本是1.20.0。还检查了最新的1.22-仍然相同。 我该怎么做才能加快pgAdmin? 请注意,psql可以正常工作,我在那里看不到相同的延迟。 pgAdmin日志进行17秒查询运行: 2016-02-06 16:18:03 INFO : queueing : select * from users …

1
如何使用索引加快Postgres中的排序
我正在使用postgres 9.4。 的messages具有以下模式:消息属于FEED_ID,并且具有posted_at,还消息可以具有(在答复的情况)的父消息。 Table "public.messages" Column | Type | Modifiers ------------------------------+-----------------------------+----------- message_id | character varying(255) | not null feed_id | integer | parent_id | character varying(255) | posted_at | timestamp without time zone | share_count | integer | Indexes: "messages_pkey" PRIMARY KEY, btree (message_id) "index_messages_on_feed_id_posted_at" btree (feed_id, posted_at DESC NULLS …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.