我正在尝试在 Ubuntu 14.04 上安装 Postgres 9.3,但在启动时遇到令人讨厌的错误。这是我所看到的:
$ sudo service postgresql restart
* Restarting PostgreSQL 9.3 database server
* Error: could not exec /usr/lib/postgresql/9.3/bin/pg_ctl /usr/lib/postgresql/9.3/bin/pg_ctl start -D /var/lib/postgresql/9.3/main -l /var/log/postgresql/postgresql-9.3-main.log -s -o -c config_file="/etc/postgresql/9.3/main/postgresql.conf" : [fail]
Run Code Online (Sandbox Code Playgroud)
所以我用这个输出检查了日志文件:
2015-01-05 21:50:05 EST LOG: database system was shut down at 2015-01-05 21:50:03 EST
2015-01-05 21:50:05 EST LOG: database system is ready to accept connections
2015-01-05 21:50:05 EST LOG: autovacuum launcher started
2015-01-05 21:50:06 EST LOG: incomplete startup packet
2015-01-05 21:51:22 EST ERROR: syntax error …
Run Code Online (Sandbox Code Playgroud) 我在以下查询中使用 Postgres:
select count(*) from image;
Run Code Online (Sandbox Code Playgroud)
此表上的主键是非递增的;它是存储在表中的图像的唯一序列号。我们的应用程序经常尝试摄取已经记录在数据库中的图像,因此主键/序列号确保它们只记录一次。
现在我们想知道是否应该使用递增的主键。我们在数据库中有 1,259,369 张图像,运行计数查询大约需要 7 分钟。
我们的应用程序永远不会从该表中删除图像 - 因此递增的主键将允许我们检查最后一个 ID 的值,该值等于表中的行数。
我正在尝试确定图像数据库中至少贡献了五张图像的贡献者总数。以下查询将按贡献者提供图像计数,但这只是难题的一部分。我相信这对于比我有更多知识的人来说很简单:)
SELECT count(*) AS i_count,contributor_id FROM images GROUP BY contributor_id ORDER BY i_count DESC
我是 Postgres 的新手,我意识到以前有人问过类似的问题,但是,我正在努力使这个查询工作:
SELECT p_search.id, count(kia.image_id) AS count
FROM (SELECT id,
keyword,
to_tsvector('english',keyword) AS tskw
FROM keyword) AS p_search
LEFT JOIN keyword_image_assoc AS kia
ON kia.keyword_id = p_search.id
WHERE p_search.tskw @@ plainto_tsquery('english','resident life')
OR p_search.tskw @@ plainto_tsquery('english','wofford')
GROUP BY kia.image_id
ORDER BY count desc
Run Code Online (Sandbox Code Playgroud)
对于上下文,我有三个表:
image
其中有一个id
作为主键keyword
它具有id
作为主键,keyword
它是一个表示关键字的字符串keyword_image_assoc
其中有一个id
,image_id
并且keyword_id
它是用来关联图像和关键字规范地。如果我添加p_search.id
到GROUP BY
子句中,结果不正确 -count
总是 1。有没有办法对结果进行分组,以便image_id
s 具有匹配关键字的数量?
我正在寻找两列count
- 匹配关键字的数量和 …