#PostgreSQL
共 83 篇文章
PostgreSQL 同事能建表,自己报 read-only:检查 HA 写入入口
PostgreSQL HA 中一台客户端能建表、另一台却只读时,对照原连接的恢复状态与地址,核对硬编码 IP 和写入入口,区分备用节点与普通只读事务。
PostgreSQL 容器报 could not resize shared memory segment
PostgreSQL 容器执行查询或维护时报共享内存无法扩展。核对容器内 /dev/shm、POSIX 内存实现和故障时用量,调整 Compose shm_size,保留镜像与数据挂载,并重建容器验证原操作。
PostgreSQL UNION 后按表别名排序报 missing FROM-clause entry
UNION 后的排序引用合并输出,分支表别名不在该范围。用输出列名或外层关系排序,并保留去重、分页和返回列的原有含义。
PostgreSQL 已 GRANT ALL,创建分区仍报 must be owner of table
PostgreSQL 给父表 GRANT ALL 后仍不能创建分区,确认父表 owner 与当前角色,采用维护角色或受控成员关系,并检查分区边界和锁影响。
PostgreSQL LEAST 提前补大值后,两列 NULL 得到伪数值
LEAST 在 PostgreSQL 中忽略 NULL,全部缺失才返回 NULL。比较前补哨兵值会污染结果,应按业务空值规则调整表达式。
psycopg2 导入 pandas 报 can’t adapt type numpy.int64:在参数边界转换标量
psycopg2 从 pandas 导入时无法适配 numpy.int64,应检查最终参数并按已验证的整数字段转换为 Python int。保留参数绑定,区分缺失值、整数范围、精度和批次事务。
PostgreSQL 调用 round 报 double precision, integer 函数不存在
PostgreSQL 的双参数 round 要求 numeric,浮点计算结果需在函数内部转换。用 pg_typeof 核对类型,并区分转换前后的运算精度和整数除法。
PostgreSQL 联合 UNIQUE 约束仍允许插入含 NULL 的重复记录
PostgreSQL 默认 UNIQUE 允许含 NULL 的重复组合。核对实际索引定义,在 15 及以上用 NULLS NOT DISTINCT 明确空值唯一性,并先处理已有重复、锁表和回退条件。
PostgreSQL 两表关联时报 operator does not exist: integer = character varying
PostgreSQL 将整数列与 varchar 列关联时需要明确转换方向。根据编号是否保留前导零选择文本或数值比较,并检查脏数据、溢出、重复匹配与执行计划。
PostgreSQL 同一事务中多次调用 now(),时间一直不变
PostgreSQL now 和 CURRENT_TIMESTAMP 在同一事务内固定为事务开始时间。按实际时刻或命令开始时间选择 clock_timestamp、statement_timestamp,保留事务边界并验证接收端精度。
PostgreSQL 复制数据库时报源数据库正在被其他用户访问
CREATE DATABASE TEMPLATE 和 createdb -T 都要求源库没有其他连接。业务需要继续运行时,通过 pg_dump 和 pg_restore 制作测试副本,并核对权限、恢复事务和目标环境。
PostgreSQL 导入显式 ID 后,自动编号插入报 duplicate key
PostgreSQL 导入显式 ID 后,序列可能仍在发出表内已有编号。核对实际取号路径、max(id) 与序列状态,在满足停写和缓存条件时推进序列,并避免用事务回滚或重置编号造成再次冲突。
PostgreSQL 新增枚举值后使用时报 unsafe use of new value
PostgreSQL 向既有枚举类型添加值后,默认值、约束或写入语句报 unsafe use of new value,需要先提交新增标签,再在下一事务使用。说明两阶段迁移、客户端外层事务、验证与回退边界。
PostgreSQL 在 WHERE 中引用 SELECT 列别名,报 column does not exist
PostgreSQL 的 WHERE 不能引用同层 SELECT 输出别名。简单字段改用原列,复杂表达式可在内层命名后由外层筛选,同时保留聚合与空值条件的含义。
PostgreSQL 的 NOT IN 子查询含 NULL,查询返回零行
PostgreSQL 的 NOT IN 子查询只要混入 NULL,就可能让本应保留的记录全部消失。检查实际排除集合,按编号匹配改写 NOT EXISTS,并明确外层空值和空集合的处理规则。
PostgreSQL 连续 UNION 的前两个分支为 NULL,报 text and integer cannot be matched
连续 UNION 的前两个分支只有无类型 NULL 时,中间结果可能先确定为 text。给占位值显式指定类型,并核对 UNION ALL 的行数与输出类型。
Prisma 查询能用,迁移报 prepared statement s0 already exists:分开池化与直连地址
Prisma 业务查询正常,迁移通过 PgBouncer 报 prepared statement s0 already exists 时,分开 CLI 直连与运行时池化地址,核对 Prisma 版本及失败迁移状态。
PostgreSQL 替换视图报 cannot change name of view column
PostgreSQL 的 CREATE OR REPLACE VIEW 要求已有列保持名称、顺序和类型。列改名可使用 ALTER VIEW RENAME COLUMN,并同步调用方与迁移定义,避免为改名删除依赖视图。


