数据库连接
共 184 篇文章
mysqlclient 连 MariaDB 报 Illegal mix of collations:初始化覆盖了排序规则
mysqlclient 连接 MariaDB 后出现 Illegal mix of collations,先在实际会话核对字符集和 collation。区分 2.1 初始化覆盖与 2.2.0 起的 collation 参数,保留原有表结构。
MongoDB 更新报 No array filter found:$[session] 与过滤器名称必须一致
MongoDB 数组更新报 No array filter found 时,对照 $[session] 与过滤器标识符,区分文档查询和数组元素筛选;核对 Spring 原始字段映射、写入范围与追加重试。
PostgreSQL 新增枚举值后使用时报 unsafe use of new value
PostgreSQL 向既有枚举类型添加值后,默认值、约束或写入语句报 unsafe use of new value,需要先提交新增标签,再在下一事务使用。说明两阶段迁移、客户端外层事务、验证与回退边界。
MySQL BETWEEN 按日期筛选漏掉结束日记录
DATETIME 与日期上界比较时,结束边界落在当天零点。改用包含起点、不包含次日零点的范围,保留小数秒,并核对 TIMESTAMP 会话时区。
SQL Server 报 IDENTITY_INSERT OFF:普通新增不要传自增 ID
SQL Server 自增列收到显式 ID,普通新增省略该列;历史数据迁移按同一会话使用 SET IDENTITY_INSERT,并核对约束、权限和恢复。
SQL Server nvarchar 变量赋值后只剩第一个字符
DECLARE 省略 nvarchar 长度默认容量为1,CAST 的默认值却为30。明确接收长度,区分双字节单位与字符,并从完整来源重新赋值。
MongoDB 聚合 $size 遇到缺失字段时报 must be an array
用 $isArray 和 $cond 区分数组与缺失、null、错误类型,保留异常标记;避免仅用 ifNull 或批量改文档掩盖数据问题。
PostgreSQL 在 WHERE 中引用 SELECT 列别名,报 column does not exist
PostgreSQL 的 WHERE 不能引用同层 SELECT 输出别名。简单字段改用原列,复杂表达式可在内层命名后由外层筛选,同时保留聚合与空值条件的含义。
Python sqlite3 查询到记录,rowcount 仍返回 -1
区分 SELECT 的结果条数与修改行数,按存在判断、完整取数或总数统计选择读取方式,避免重复 fetchall 丢掉数据。
PostgreSQL 的 NOT IN 子查询含 NULL,查询返回零行
PostgreSQL 的 NOT IN 子查询只要混入 NULL,就可能让本应保留的记录全部消失。检查实际排除集合,按编号匹配改写 NOT EXISTS,并明确外层空值和空集合的处理规则。
PostgreSQL 连续 UNION 的前两个分支为 NULL,报 text and integer cannot be matched
连续 UNION 的前两个分支只有无类型 NULL 时,中间结果可能先确定为 text。给占位值显式指定类型,并核对 UNION ALL 的行数与输出类型。
SQLite INSERT OR REPLACE 后关联子表数据被级联删除
唯一键冲突的 REPLACE 会删除旧父行,延迟外键检查不能保住子记录;改用保留父键的 UPSERT,并单独核对已提交的数据损失。
MySQL 查询报 Every derived table must have its own alias
MySQL 的 FROM 或 JOIN 子查询缺少表别名时报 1248。区分列别名与派生表名,核对多层括号、输出列名及连接结果。
SQLite printf 加同名别名后,整数排序变成文本顺序
ORDER BY 优先匹配输出别名,printf 返回文本。明确按输入数值列排序,保留显示字段名,并核对存储类型、并列顺序与查询层次。
MySQL 导入报 ERROR 1153:客户端与服务端的包大小都要检查
导入大 BLOB 或多行 INSERT 时,仅改 mysql 客户端上限可能无效。检查服务端、连接继承值和备份语句,再评估临时调整与恢复重试。
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,并同步调用方与迁移定义,避免为改名删除依赖视图。
PostgreSQL 批量 upsert 报 cannot affect row a second time
PostgreSQL 批量 INSERT ON CONFLICT DO UPDATE 因同批输入重复命中一个键而失败。按完整冲突键检查输入,明确保留规则后去重,并核对批处理边界和重试风险。


