数据库连接
共 184 篇文章
PostgreSQL LEAST 提前补大值后,两列 NULL 得到伪数值
LEAST 在 PostgreSQL 中忽略 NULL,全部缺失才返回 NULL。比较前补哨兵值会污染结果,应按业务空值规则调整表达式。
Python sqlite3 executemany 执行 SELECT 报 ProgrammingError
区分批量 DML 与查询结果收集,改用逐项 execute 或绑定参数的 IN 查询,并核对重复项、顺序和空输入。
psycopg2 导入 pandas 报 can’t adapt type numpy.int64:在参数边界转换标量
psycopg2 从 pandas 导入时无法适配 numpy.int64,应检查最终参数并按已验证的整数字段转换为 Python int。保留参数绑定,区分缺失值、整数范围、精度和批次事务。
MongoDB Node.js 的 findOneAndUpdate 更新成功却返回旧文档
原生 Node.js 驱动默认返回更新前文档。区分 returnDocument 与 includeResultMetadata,并按实际版本修正选项和结果读取,避免误重试写入。
PostgreSQL 调用 round 报 double precision, integer 函数不存在
PostgreSQL 的双参数 round 要求 numeric,浮点计算结果需在函数内部转换。用 pg_typeof 核对类型,并区分转换前后的运算精度和整数除法。
SQLAlchemy 内存 SQLite 已建表,请求却报 no such table:连接没有共享
内存 SQLite 已建表但 FastAPI TestClient 请求仍报 no such table 时,检查线程与连接范围;区分串行 StaticPool 和并发共享内存 URI,保留事务与数据生命周期限制。
MySQL UPDATE 返回 0 rows affected,但目标记录确实存在
MySQL UPDATE 默认按实际变化计数,值相同和条件未匹配都可能返回 0。区分 Rows matched 与 Changed,核对 CLIENT_FOUND_ROWS 连接语义,并修正接口的不存在判断。
PostgreSQL 联合 UNIQUE 约束仍允许插入含 NULL 的重复记录
PostgreSQL 默认 UNIQUE 允许含 NULL 的重复组合。核对实际索引定义,在 15 及以上用 NULLS NOT DISTINCT 明确空值唯一性,并先处理已有重复、锁表和回退条件。
SQLAlchemy 已加 selectinload 仍报 MissingGreenlet:get 可能复用旧对象
AsyncSession 的 get 命中已有对象时可能不执行加载查询,核对 identity map,按业务选择 populate_existing 或显式关系加载,保留未提交状态与版本边界。
PostgreSQL 两表关联时报 operator does not exist: integer = character varying
PostgreSQL 将整数列与 varchar 列关联时需要明确转换方向。根据编号是否保留前导零选择文本或数值比较,并检查脏数据、溢出、重复匹配与执行计划。
MySQL 升级后 DELETE 报 ERROR 1093:多套一层子查询仍可能被合并
MySQL 升级后同表子查询写操作报 1093,检查派生表合并,再按版本选择 NO_MERGE 或受控会话方案,保留候选行与数据恢复要求。
PostgreSQL 同一事务中多次调用 now(),时间一直不变
PostgreSQL now 和 CURRENT_TIMESTAMP 在同一事务内固定为事务开始时间。按实际时刻或命令开始时间选择 clock_timestamp、statement_timestamp,保留事务边界并验证接收端精度。
PostgreSQL 复制数据库时报源数据库正在被其他用户访问
CREATE DATABASE TEMPLATE 和 createdb -T 都要求源库没有其他连接。业务需要继续运行时,通过 pg_dump 和 pg_restore 制作测试副本,并核对权限、恢复事务和目标环境。
ClickHouse 命令行能连接,Python HTTPDriver 却报 400:转发到了原生端口
ClickHouse 命令行能连,Python HTTPDriver 却报 400 时,核对端口转发实际目标。区分原生 TCP 与 HTTP、HTTPS 接口,按响应内容判断协议错误,保留本地转发和 TLS 边界。
SQLAlchemy 执行 VACUUM 报事务错误:先检查自定义 BEGIN 钩子
SQLite VACUUM 仍报事务错误时,核对自定义 BEGIN 钩子、驱动自动提交与维护连接的边界,避免裸 COMMIT 提前提交业务数据。
Redis LRANGE 把条数当成结束下标后返回空列表
LRANGE 的 stop 是包含式结束下标。偏移量加数量接口应换算为 start + count - 1,并单独处理数量为零和列表并发变化。
PostgreSQL 导入显式 ID 后,自动编号插入报 duplicate key
PostgreSQL 导入显式 ID 后,序列可能仍在发出表内已有编号。核对实际取号路径、max(id) 与序列状态,在满足停写和缓存条件时推进序列,并避免用事务回滚或重置编号造成再次冲突。


