标签: postgresql

使用命令行更改 PostgreSQL 端口

我的 PostgreSQL 默认端口是 5432,我想通过使用命令行(在 Windows 7 中)更改默认端口。

我之前看到过这个解决方案:https : //stackoverflow.com/questions/187438/want-to-change-pgsql-port

我尝试运行以下命令,但失败了:

postgres --p 5431
Run Code Online (Sandbox Code Playgroud)

有人能告诉我如何使用命令行更改端口吗?

postgresql windows command-line

13
推荐指数
2
解决办法
5万
查看次数

存储记录元数据的最佳实践

在数据库中存储单个记录的元数据的最佳实践是什么?

我需要在我的数据库中存储许多表的常见元数据,例如创建时间和上次更新时间。我找到了几种不同的解决方案:

  1. 将元数据直接存储在表中。

    优点:

    • 元数据直接链接到记录
    • 无需连接即可检索元数据

    缺点:

    • 需要大量重复列(除非使用继承)
    • 元数据和业务数据不分离
  2. 创建一个通用元数据表,并使用软外键将数据链接到正确的表和记录。

    优点:

    • 没有重复的列
    • 元数据与业务数据分离

    缺点:

    • 元数据和数据之间没有直接链接(不能使用 FK)
    • 联接需要附加条件
  3. 为每个需要元数据的表创建单独的元数据表。

    优点:

    • 元数据直接链接到记录
    • 元数据与业务数据分离

    缺点:

    • 需要很多额外的表
    • 需要大量重复列(除非使用继承)

是否有比我在这里提到的更多的选择、优点或缺点?存储这些元数据的最佳实践是什么?

postgresql database-design metadata

13
推荐指数
1
解决办法
5780
查看次数

为什么 PostgreSQL 9.3 不能在 Ubuntu 上启动?

我已经在运行 Ubuntu 12.04 和 13.04 的 2 个虚拟机上从 APT 存储库成功安装了 PostgreSQL 9.3……但是,我无法在运行 Ubuntu 12.04 的主机上正确安装它。

安装(这次)似乎没问题,但也许有一个我不明白的错误:

* No PostgreSQL clusters exist; see "man pg_createcluster"
Setting up postgresql-9.3 (9.3.0-2.pgdg12.4+1) ...
Creating new cluster 9.3/main ...
  config /etc/postgresql/9.3/main
  data   /var/lib/postgresql/9.3/main
  locale en_US.UTF-8
  port   5432
update-alternatives: using /usr/share/postgresql/9.3/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode.
Run Code Online (Sandbox Code Playgroud)

所以我然后尝试将自己添加为 PostgreSQL 用户,但我得到了这个:

createuser: could not connect to database postgres: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections …
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-9.3

13
推荐指数
2
解决办法
5万
查看次数

从远程服务器复制 PostgreSQL 数据库

当我使用 MySQL 时,我可以运行一个命令,将 SSH 连接到我的服务器并将数据库复制到我的本地机器上。

ssh -t remoteserver 'mysqldump --compress -u dbuser --password="password" db_name' | /usr/local/mysql/bin/mysql -u root --password="password" local_db_name
Run Code Online (Sandbox Code Playgroud)

我如何用 PostgreSQL 做同样的事情?

postgresql

13
推荐指数
1
解决办法
3万
查看次数

从集合中设置随机值

我需要将一些随机值放入数据库,但我不想最终得到完全随机的文本(如 7hfg43d3)。相反,我想随机选择自己提供的值之一。

postgresql random

13
推荐指数
2
解决办法
1万
查看次数

在Postgres中,如何通过UUID类型的列进行选择

我有一个其他人创建的数据库表,它的 PK 是“uuid”类型的单列。我正在努力按该列执行简单的选择。我尝试过但没有成功的例子:

select from site where id = "9d4da323-4c20-360f-bd9b-ec54feec54f0"

select from site where id = UUID('9d4da323-4c20-360f-bd9b-ec54feec54f0')

select from site where id::text = '9d4da323-4c20-360f-bd9b-ec54feec54f0'

正确的语法是什么?

postgresql uuid

13
推荐指数
1
解决办法
3万
查看次数

什么是有效锭数

PostgresSQL wiki建议寻找最佳数据库连接池大小的规则。

数量 = ((core_count * 2) + effective_spindle_count)

但它没有解释有效主轴数是多少以及如何找到该值。

postgresql max-connections

13
推荐指数
1
解决办法
7735
查看次数

将 PostgreSQL 从 9.4 升级到 12 时消除 OID

我目前在生产环境中运行 PostgreSQL 9.4,但我们正在服务器上进行操作系统升级,因此我认为可能是时候将 PostgreSQL 版本升级到最新版本 (12),以便我可以利用一些可用的新功能。然而,各个数据库中的一些表是很久以前构建的(例如,2008 年之前,至少在某些情况下很可能是 2000 年之前)。这些数据库包含许多使用 OID 的表(WITH OIDS=TRUE在定义中)。

此外,我还对大部分代码库进行了搜索,以查找任何表中对 OID 列的引用,并发现了几个实例,其中存在显式调用 OID 列的查询。幸运的是,这样的情况并不,而且大多数都是引用系统表(即,SELECT oid FROM pg_namespace...FROM pg_class)。

对从 9.4 数据库转储的数据运行pg_upgrade该过程会在此时停止,并断然声明直到数据库中没有 OID 后才会继续。据我所知,他们在过去的几个版本中一直在慢慢地逐步淘汰这些内容,而 12 版本使它们基本上变得无关紧要,但建议是在pg_upgrade继续之前完全删除 OID 列。我认为这对于一个几乎不相关的专栏来说是“矫枉过正”。

此时 - 我承认我还没有完全考虑到这一点 - 我想知道简单地“翻转”WITH OIDS受影响的表定义中的开关是否FALSE足以继续升级?如果翻转的话,现有的 OID 列是否仍是数据库结构的一部分(我认为会,但自动升级可以做一些有趣的事情)?

我意识到,在理想情况下,我希望最终从数据库中完全消除 OID。然而,作为一个单人 IT 部门,这必须“列入清单”以供以后评估。目前,我只是想让数据库在最新的 PostgreSQL 版本上启动并运行,同时我有机会这样做而不会立即影响操作。

postgresql upgrade

13
推荐指数
2
解决办法
2万
查看次数

如何在postgres中为复合类型的字段指定非空约束

假设我想要一个复合类型的地址,例如:

create type address as (
  city text,
  address_line text,
  zip_code int
);
Run Code Online (Sandbox Code Playgroud)

为了使数据完整性更好,我不想允许NULLs 成为cityaddress_line或 的成员zip_code。所以我想对not null这些字段进行限制。

创建域检查对我来说不起作用。所以这段代码会产生错误:

create domain address_domain as address 
check (
  value.city is not null and 
  value.address_line is not null and
  value.zip_code is not null
);
Run Code Online (Sandbox Code Playgroud)

您可能会说:“那么,为什么不将地址存储为三列,并向字段添加约束呢?”。我会回答说,我希望能够使地址本身可以为空,但如果地址存在,那么它的所有字段也应该存在。像这样的东西:

create table companies (
  id serial primary key,
  name text not null,
  headquaters address -- this one can be null tho
)
Run Code Online (Sandbox Code Playgroud)

postgresql composite-types domain

13
推荐指数
1
解决办法
3122
查看次数

我应该如何在不使用 PostGIS 的情况下在 Postgres 中表示纬度和经度?

我应该如何在不使用 PostGIS 的情况下在 Postgres 中表示纬度和经度?我使用的系统不允许 SQL passthrough,所以我不能使用 POSTGIS。

postgresql

12
推荐指数
3
解决办法
7348
查看次数