小编Dim*_*las的帖子

将逗号分隔的记录拆分为自己的行

我有下表,名为商店:

store_id INT
emails VARCHAR
Run Code Online (Sandbox Code Playgroud)

其中包含值:

商店ID 电子邮件
1 user_1@example.com,user2@example.com
2 uswe3@example.com,user4@example.com
4 admin@example.com

我想生成以下集合:

商店ID 电子邮件
1 user_1@example.com
1 user2@example.com
2 uswe3@example.com
2 user4@example.com
4 admin@example.com

正如您所看到的,我想将电子邮件字段拆分为仅包含一个电子邮件地址的单独记录。你知道我该怎么做吗?

到目前为止,我成功创建了以下查询:

select store_id,string_to_array(emails,',') from stores
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将其拆分string_to_array为自己的行。

postgresql string-splitting

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

为什么 NOLOCK 是这样实现的?

最近我NOLOCK在 SQL Server 中搜索了选项。我发现当事务在表上处于活动状态时,SQL Server 甚至不允许从特定表中读取,直到事务提交或回滚(据我了解,何时应该使用“with ( nolock)” )。

同时,其他 RDBMS(例如 PostgreSQL)允许您从具有活动写入事务的行读取值。他们只会给你写之前的价值观。特别是这似乎是 PostgreSQL MVCC 的行为(正如我从第 13 章介绍中了解到的。并发控制)。

我有这个迫切的问题。为什么在 SQL Server 中存在死锁的可能性,而在其他 RDBMS 中,您只是在写入新值之前获得旧值?

注意:我问是因为我可能理解错误。

sql-server concurrency transaction nolock

5
推荐指数
1
解决办法
674
查看次数

Postgresql 无法使用 usermap 进行对等身份验证(提供的用户名 (^dbuser^) 和经过身份验证的用户名 (^sysuser^) 不匹配)

我正在尝试使用 usermap 对某些用户进行对等身份验证。我想要做的是映射用户邮件阅读器,如您所见:

postgres=# \du
                              List of roles
 Role name  |                   Attributes                   | Member of 
------------+------------------------------------------------+-----------
 mailreader |                                                | {}
 postgres   | Superuser, Create role, Create DB, Replication | {}
Run Code Online (Sandbox Code Playgroud)

进入系统的用户root,dovecot,postfix。因此,我编辑了我的pg_ident.conf并放置了以下内容:

mailmap         dovecot                 mailreader
mailmap         postfix                 mailreader
mailmap         root                    mailreader
Run Code Online (Sandbox Code Playgroud)

我还编辑pg_hba.conf并附加了以下内容:

local    mail        all                     peer map=mailmap
Run Code Online (Sandbox Code Playgroud)

当我尝试通过sudo psql -U mailreader -d mail命令连接时,我得到:

psql:致命:用户“mailreader”的对等身份验证失败

错误。

我还尝试了以下配置:

local    mail            all                                     ident map=mailmap
Run Code Online (Sandbox Code Playgroud)

没有任何进展。

我可以帮忙吗?

编辑 1

有关错误的日志是:

2017-06-27 19:10:10 UTC [1188-1] mailreader@mail LOG:  provided user name …
Run Code Online (Sandbox Code Playgroud)

postgresql authentication postgresql-9.4

5
推荐指数
1
解决办法
4678
查看次数

一旦“max_standby_archive_delay”和“max_standby_streaming_delay”的值为-1,是否会导致重负载时复制停止?

在 aws RDS 上的 postgresql 主从复制方案上的复制服务器中,我收到以下错误:

SQLSTATE[40001]: Serialization failure: 7 ERROR:  canceling statement due to conflict with recovery
Run Code Online (Sandbox Code Playgroud)

据我了解,原因是复制的发生类似于数据库迁移。查询序列被写入称为 WAL 的内容,然后以 FIFO 序列执行。

另外,我了解到,一旦在执行 wal 时执行查询,可能会导致冲突,因为有时当前正在执行的查询可能会导致获取陈旧数据。

因此,根据文档,存在延迟,允许首先执行当前查询,然后应用 wal 更改。这些是:

  1. max_standby_archive_delay
  2. max_standby_streaming_delay

但是在繁重的查询(查询执行时间> 30秒)上将这些值设置为-1会导致副本在较长时间内拥有过时的数据吗?

postgresql replication amazon-rds

4
推荐指数
1
解决办法
4566
查看次数