标签: postgresql

PostgreSQL:损坏的主键,不一致的表

在从云故障中恢复时,我发现PostgreSQL数据库中的某些表行为异常。这些表使用主键编制索引,但pg_dump产生重复字段,pg_restore在备份服务器上失败。

我试图REINDEX

REINDEX INDEX rank_details_pkey;
ERROR:  could not create unique index "rank_details_pkey"
DETAIL:  Table contains duplicated values.
Run Code Online (Sandbox Code Playgroud)

指数定义为:

<table info here>
Indexes:
    "rank_details_pkey" PRIMARY KEY, btree (user_id)
Run Code Online (Sandbox Code Playgroud)

而且,奇怪的是,

SELECT user_id, COUNT(*) FROM <table name> GROUP BY 1 HAVING COUNT(*) > 1;
 user_id | count 
---------+-------
(0 rows)
Run Code Online (Sandbox Code Playgroud)

总而言之 - 我的表中有重复的值,无法找到或清除

任何想法如何解决这一问题?这是一个生产服务器,所以所有修复都应该在不影响服务的情况下完成。

postgresql primary-key

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

如何为 pgAdmin 中的所有函数生成脚本?

我使用的是 pgAdmin 版本 1.10.5,并且我已经检查了属性和菜单选项,但找不到有关该主题的任何内容。

例如,我只想生成一个脚本,其中包含我为架构创建的函数。如果我右键单击数据库节点并选择备份,它可以选择为架构创建脚本,但它会创建所有对象。我只想要功能。

postgresql pgadmin

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

是否需要不时刷新索引?

这个问题对于我使用的所有数据库产品都很常见,即。SQL Server、MySQL、Oracle 和 PostgreSQL。

我创建了一个新的数据库,目前表中没有记录。我已经在查询中经常需要的所有这些表列上创建了索引。我想知道当我继续在表中添加记录时,索引是如何在物理上(集群)和逻辑上(非集群)更新的?索引是自动更新还是我需要不时手动更新索引?

mysql innodb postgresql oracle sql-server

6
推荐指数
2
解决办法
4428
查看次数

如何将列的数据类型从整数更改为货币?

我正在尝试将 PostgreSQL 表列从整数转换为货币,但收到错误消息:

不能将类型 MyColumn 转换为 money

我已经尝试过这两个陈述,但还没有找到任何关于如何真正做到这一点的真实例子。

ALTER TABLE products 
    ALTER COLUMN price TYPE money
Run Code Online (Sandbox Code Playgroud)

和:

ALTER TABLE products 
    ALTER COLUMN price TYPE money USING to_char(price, '999.99')
Run Code Online (Sandbox Code Playgroud)

如何将 PostgreSQL 列的数据类型从整数更改为货币?

postgresql datatypes alter-table money

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

PostgreSQL 的 Unicode 支持及其性能

PostgreSQL 的 Unicode 支持如何?

如果我想保存 Unicode 数据,它在存储和检索时是否必须经过转换过程?如果是,那么这种转换的性能是什么?

如果有这样的转换,在存储简单的ASCII数据时会起作用吗?

postgresql performance collation

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

在 PostgreSQL 中查找是否有 O(1) 复杂度的索引?

PostgreSQL 中是否有任何索引类型为查找提供O(1) 复杂度?在字符串上?

postgresql index

6
推荐指数
2
解决办法
2851
查看次数

如何在pg_restore期间设置search_path?

pg_dump 和 pg_restore 会将 search_path 设置为空字符串,如果有函数在没有显式指定模式名称的情况下调用公共模式中的函数(即:uuid_generate_v4()vs public.uuid_generate_v4()),则会失败。

我如何强制pg_restore使用指定的 search_path 例如public

postgresql pg-dump pg-restore

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

PostgeSQL:如果不存在则创建角色/用户?

是否有某种方法可以通过 SQL 在 PostgreSQL 中创建用户/角色/组(仅当用户/角色/组尚不存在时)?到目前为止,我找到的唯一解决方案是创建自定义存储过程,因为它支持条件。有没有我忽略的更简单的解决方案?谢谢你!

postgresql ddl

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

如何替换字符串(文本列)中最后一次出现的字符?

假设我在 Postgres 中有一个具有此值的文本字段:

'bar$foo$john$doe$xxx'
Run Code Online (Sandbox Code Playgroud)

我想将最后一次出现的美元 ( $) 字符替换为另一个字符,例如“-”。替换后该字段的内容应为:

'bar$foo$john$doe-xxx'
Run Code Online (Sandbox Code Playgroud)

postgresql regular-expression replace

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

PostgreSQL 忽略索引,运行 seq 扫描

我的表包含列的索引total_balance

\d balances_snapshots
                                          Table "public.balances_snapshots"
    Column     |            Type             | Collation | Nullable |                    Default
---------------+-----------------------------+-----------+----------+------------------------------------------------
 user_id       | integer                     |           |          |
 asset_id      | text                        |           |          |
 timestamp     | timestamp without time zone |           |          | now()
 total_balance | numeric                     |           | not null |
 id            | integer                     |           | not null | nextval('balances_snapshots_id_seq'::regclass)
Indexes:
    "balances_snapshots_pkey" PRIMARY KEY, btree (id)
    "balances_snapshots_asset_id_idx" btree (asset_id)
    "balances_snapshots_timestamp_idx" btree ("timestamp")
    "balances_snapshots_user_id_idx" btree (user_id)
    "balances_total_balance_idx" btree (total_balance)
Foreign-key constraints:
    "balances_snapshots_asset_id_fkey" FOREIGN KEY (asset_id) …
Run Code Online (Sandbox Code Playgroud)

postgresql index datatypes postgresql-performance

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