程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
软件定制开发/软件按需定制 技术文章
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
MySQL 报 ERROR 1461(max_prepared_stmt_count 16382):先看 Com_stmt_close 是不是 0
案例
MySQL 报 ERROR 1461(max_prepared_stmt_count 16382):先看 Com_stmt_close 是不是 0
2026-11-12 00:04:59
MySQL 抛 ERROR 1461「Can't create more than max_prepared_stmt_count statements (current value: 16382)」时,用 Com_stmt_prepare/Com_stmt_close 的差值判断是语句泄漏还是配额不够;说清全局配额与每连接缓存的乘法关系、PDO 与 Connector/J 的默认模式,以及 performance_schema 定位持有语句最多的连接。
预处理语句
MySQL
prepared
statement
数据库排障
nf_conntrack: table full 排障:count/max 看不出丢包,判据在 drop 列与 hashsize
编程
nf_conntrack: table full 排障:count/max 看不出丢包,判据在 drop 列与 hashsize
2026-11-12 00:04:36
应用侧只报 i/o timeout、connection refused,真正线索是 dmesg 里的 nf_conntrack: table full, dropping packet。这篇讲清判据:先看 /proc/net/stat/nf_conntrack 的 drop、early_drop、insert_failed 累计列,而不是盯 count/max 使用率;再讲 max 默认等于 buckets、只加 max 不加 hashsize 只加长链、buckets 只在初始 netns 可写、容器每 netns 独立表导致宿主机看不出、sysctl -p 在模块未加载时静默失败,以及止血与找源的顺序。
运维排障
nf_conntrack
netfilter
网络排障
Linux运维
验签总差在 `%21` 和 `!` 之间:空格、`~`、`!` 在三套 URL 编码规则里的分歧
编程
验签总差在 `%21` 和 `!` 之间:空格、`~`、`!` 在三套 URL 编码规则里的分歧
2026-11-12 00:04:04
同一串参数值在 PHP urlencode、rawurlencode、Go QueryEscape、PathEscape、JS encodeURIComponent 下输出不同:空格是 + 还是 %20、~ 是 %7E 还是原样、! 编不编码。附五函数输出对照、Go 源码里的 encodePathSegment 分支,以及签名验签不一致时的逐层排查顺序。
URL编码
PHP
Go
JavaScript
签名
接口对接
同一用户并发请求排队、CPU 却不高:PHP 会话锁的持有边界与后端默认值
编程
同一用户并发请求排队、CPU 却不高:PHP 会话锁的持有边界与后端默认值
2026-11-12 00:03:49
PHP 默认 files 会话在 session_start() 时对会话文件取 flock 排他锁,同一 session 的并发请求被串行化:FPM worker 打满但 CPU 不高、慢日志时间花在 session_start()。给出现象判据、strace/lsof 证据链、session_write_close 与 read_and_close 的持锁边界,以及 memcached 默认加锁、phpredis 默认不加锁的差异和 Redis 会话的三个配置约束。
会话状态
PHP
Session
并发
Redis
Web
微信支付退款 ABNORMAL:钱已从基本户扣出,停在退款中间账户
编程
微信支付退款 ABNORMAL:钱已从基本户扣出,停在退款中间账户
2026-11-12 00:03:35
微信支付退款单状态 ABNORMAL 不是退款失败:资金已从基本户扣出、停在退款中间账户。分清申请阶段 403 USER_ACCOUNT_ABNORMAL、终态 CLOSED 与 ABNORMAL 三种「退款异常」,给出 apply-abnormal-refund 的路径、原退款单号规则、type 两种处理的取舍与 Go 侧状态分流。
退款异常
微信支付
支付接口
ABNORMAL
接口对接
GoBackup:一个 Go 二进制,把数据库和目录按 cron 备份到 20+ 种存储
编程
GoBackup:一个 Go 二进制,把数据库和目录按 cron 备份到 20+ 种存储
2026-11-11 21:34:14
GoBackup 是 Go 写的单二进制备份工具,一份 YAML 把 MySQL/PG/Redis 和目录按 cron 推到 S3/OSS/SCP 等 20 多种存储。这篇记配置结构、keep 回收、加密与热重载命令,以及它不负责恢复这件事。
GoBackup
备份
MySQL
PostgreSQL
YAML
lazysql:用 Vim 键位在终端连库,跑完 SELECT 就回代码
编程
lazysql:用 Vim 键位在终端连库,跑完 SELECT 就回代码
2026-11-11 21:33:01
lazysql 是 Go 写的终端数据库客户端,Vim 键位 + 三栏 TUI,支持 MySQL/PG/SQLite/MSSQL/ClickHouse。这篇记录安装、连接串与 TOML 配置写法,以及 ReadOnly 只读开关为什么要给生产库打开。
lazysql
Go
MySQL
PostgreSQL
终端工具
MySQL 9.7 升级后 DDL 被拒:先读 SHOW WARNINGS,再决定用 INPLACE 还是升 9.7.4
编程
MySQL 9.7 升级后 DDL 被拒:先读 SHOW WARNINGS,再决定用 INPLACE 还是升 9.7.4
2026-11-11 21:08:26
MySQL 9.7 早期为了修 B 树死锁把索引记录大小估算改准了,副作用是 CREATE TABLE / ALTER TABLE 校验变严,一些更早 LTS 能过的表定义被拒或出告警。9.7.4 回退了多数 DDL,但 ALGORITHM=INSTANT 仍严格。文章给排查顺序、核对列与前缀索引的 SQL,以及两条处理路径的代价。
MySQL
DDL
升级
排障
PHP 8.6 的 Time\Duration:把超时和退避延迟换成带纳秒精度的值类型
代码
PHP 8.6 的 Time\Duration:把超时和退避延迟换成带纳秒精度的值类型
2026-11-11 21:07:09
PHP 8.6 新增 Time\Duration:final readonly、纳秒精度的固定时长值类型,没有天/月这类日历单位所以长度无歧义。文章讲清工厂方法、四则运算、比较与排序回调、约 292 年上限,以及何时该用它替换 int 毫秒、何时该继续用 DateInterval 或落成数值。
PHP
8.6
时间处理
类型设计
Go 1.27 升级笔记:编译能过,先响的是 vet、gofmt 和 go.mod diff
编程
Go 1.27 升级笔记:编译能过,先响的是 vet、gofmt 和 go.mod diff
2026-11-11 21:06:37
Go 1.27 的语言没有变动,升级后先响的是工具链:go test 默认跑 stdversion vet、go mod tidy 会把重复 require 块并成两块、gofmt 的列对齐判定改了会带来空白 diff、go tool trace 只传端口时只绑 localhost。文章还覆盖 vet 对 %w 包指针的新报告和已移除 GODEBUG 开关的处理,并给落地顺序。
Go
工具链
CI
升级
MySQL 9.7 的 enable_cascade_triggers:级联动作会激活子表触发器,但这个变量已标弃用
编程
MySQL 9.7 的 enable_cascade_triggers:级联动作会激活子表触发器,但这个变量已标弃用
2026-11-11 21:05:14
MySQL 9.7 新增会话变量 enable_cascade_triggers,默认关闭。打开后 SQL 层外键的 CASCADE / SET NULL 会在子表行上激活触发器,触发器报错会让整条语句连级联变更一起回滚。文章给核查 SQL、三类误开症状,并指出这个变量在 9.7.0 清单里已被标为弃用。
MySQL
触发器
外键
数据一致性
MySQL 9.7.4 起用四段式版本号:驱动无感,巡检脚本会漏
编程
MySQL 9.7.4 起用四段式版本号:驱动无感,巡检脚本会漏
2026-11-11 21:04:32
MySQL 9.7.4 起,服务端多了 `MAJOR.MINOR.PATCH.UPDATE` 四段式精确版本标识,但 `VERSION()`、经典握手和既有 API 仍是三段。结果是驱动无感、而用正则抓三段版本号的巡检脚本会把同一条 patch line 上的两次更新压成同一个值。这篇讲清取值方式与灰度比对写法。
MySQL
版本管理
运维
监控
MySQL 9.7 的 innodb_log_writer_threads 默认值:log_bin、核数与 cpuset 一起决定
编程
MySQL 9.7 的 innodb_log_writer_threads 默认值:log_bin、核数与 cpuset 一起决定
2026-11-11 21:03:46
MySQL 9.7 改了 innodb_log_writer_threads 的默认值判定:log_bin=OFF 时只要超过 4 个逻辑 CPU 就开线程,而 log_bin=ON 仍沿用 32 核门槛。加上 9.7 开始按 cpuset 计算可用核数,容器绑核会让默认值在边界上翻转。这篇给规则表、核查命令和取舍判断。
MySQL
InnoDB
性能调优
容器
PHP 8.6 的 Stream 错误模型:用 `error_mode` 把 warning 变成 `StreamException`
编程
PHP 8.6 的 Stream 错误模型:用 `error_mode` 把 warning 变成 `StreamException`
2026-11-11 21:01:58
PHP 8.6 给流操作加了统一的错误 API:`error_mode` 可选保持 warning、抛 `StreamException` 或静默,`error_store` + `stream_last_errors()` 提供结构化错误和 50 多个语义错误码。文章讲清必须显式挂在 context 上、为什么不允许全局生效,以及哪些代码值得改造、哪些别碰。
PHP
8.6
异常处理
I
O
PHP 8.6 部分函数应用:`add(1, ?)` 拿到的是一个闭包
代码
PHP 8.6 部分函数应用:`add(1, ?)` 拿到的是一个闭包
2026-11-11 21:01:21
PHP 8.6 的部分函数应用用 `?` 和 `...` 两个占位符把参数空出来,返回一个接收缺少参数的闭包。这篇讲清预填参数在创建时求值、闭包保留原签名、每个 `?` 在闭包上变必填这三条语义,以及它相对 arrow fn 什么时候更清晰、什么时候更难看懂。
PHP
8.6
闭包
函数式
Valkey 升到 9.1 就回不去了:RDB 头从 REDIS0011 变成 VALKEY080,旧二进制只回一句 Can't handle RDB format version 80
编程
Valkey 升到 9.1 就回不去了:RDB 头从 REDIS0011 变成 VALKEY080,旧二进制只回一句 Can't handle RDB format version 80
2026-11-11 20:02:45
Valkey 7.2/8.x 写 RDB 11,9.0/9.1 写 RDB 80,9.2 RC 写 81:升级后旧二进制只报 Can't handle RDB format version 80。含 rdb-version-check relaxed 的真实边界、9.0 恒发 RDB 80、9.1 降级发 11 的两个 abort 条件、9.1.0–9.1.2 的 listpack 分段 bug、DUMP/RESTORE 报 payload version 错,以及 go-redis 与 HELLO/INFO 的客户端破坏性变更和可回滚升级步骤。
Valkey
Redis
运维
数据库
升级
PostgreSQL 19 把 BufferPin 改名成 Buffer:等待事件告警不报错,只静默返回 0 行
编程
PostgreSQL 19 把 BufferPin 改名成 Buffer:等待事件告警不报错,只静默返回 0 行
2026-11-11 20:01:16
PostgreSQL 19 升级实测:BufferPin 等待事件改名 Buffer/BufferCleanup,旧告警查询不报错只返回 0 行;另附 sync_error_count、io_workers、standard_conforming_strings 四处硬报错,登录新增 MD5 与密码过期 WARNING,新增列对 SELECT * 的影响,以及 pg_upgrade --check 前的检查清单。
PostgreSQL
数据库
运维
监控
升级
Stripe webhook 全 400 又重复发货:whsec 有三套、302 也算投递失败、事件还会乱序
代码
Stripe webhook 全 400 又重复发货:whsec 有三套、302 也算投递失败、事件还会乱序
2026-11-11 09:01:16
线上 Stripe 回调 100% 返 400、同时出现重复发货时,按代价从低到高排查:三套 whsec 分别属于 Dashboard、test/live 与 stripe listen;原始 body 被框架改写;apex→www 的 302 被判投递失败且应用日志为空;事件至少一次投递且不保证顺序,created 只有秒级精度不能用来判重。给出 Go 手写验签、MySQL 幂等表与复现命令。
Stripe
Webhook
支付回调
幂等
签名验证
LTS 的支持窗口从哪天开始算:补丁版本不续命,ESM/ELC 才算延长
编程
LTS 的支持窗口从哪天开始算:补丁版本不续命,ESM/ELC 才算延长
2026-11-11 00:05:29
装了更晚的补丁版本并不等于把 EOL 往后推:支持期只挂在 minor/major 版本上,4.1 到期时 4.1.x 全家同时失效。文章对照 midPoint、.NET、Ubuntu、Zabbix、Jenkins LTS、RHEL、OpenHarmony 七套 LTS 口径,拆开「起算点 / 标准窗口 / 付费延长」三者,并说明 EOL 后 unattended-upgrades 仍在写日志、apt 却已 404 的假象。
LTS升级
运维
版本管理
EOL
Linux
Ubuntu 24.04 升到 26.04 之后:三处被静默改掉的配置与逐项验证命令
编程
Ubuntu 24.04 升到 26.04 之后:三处被静默改掉的配置与逐项验证命令
2026-11-11 00:04:34
Ubuntu 24.04 原地升级到 26.04 LTS 跑完并不等于系统完好:/etc/sysctl.conf 被 procps 标为 remove-on-upgrade 直接删除、第三方 apt 源被清成一行注释只剩 .disabled、残留 conffile 让 logrotate 整体失败。文中给出每处的验证命令与修复方向,以及 PostgreSQL 18 只装不迁、PHP socket 路径、MySQL default_authentication_plugin 三处「看着正常其实没迁」的组件和 SSH 自锁预防。
LTS升级
Ubuntu
运维
系统升级
Linux
pt-query-digest 默认只报 20 条:--limit、--outliers、--since 的统计口径
编程
pt-query-digest 默认只报 20 条:--limit、--outliers、--since 的统计口径
2026-11-11 00:04:16
pt-query-digest 的默认值会改变报告口径:--limit 95%:20 是百分比与条数两道截断,取先到者,被砍掉的行聚合成 MISC;--outliers 默认 Query_time:1:10 会绕过 --limit 把查询塞回报告;--since 严格、--until 非严格,时间戳非单调时会误丢事件。另含 stddev/median 的截尾算法、V/M 判读、genlog 默认 order-by 变化、--filter 属性未定义崩溃等坑,附可复现命令序列。
PerconaToolkit
pt-query-digest
MySQL
慢查询
慢日志
Percona
性能优化
运维
没有 FOREIGN KEY 的库,如何让 ER 图连上线:tbls 与 SchemaSpy 的关系推断
编程
没有 FOREIGN KEY 的库,如何让 ER 图连上线:tbls 与 SchemaSpy 的关系推断
2026-11-11 00:04:10
老库和删掉外键的库用 tbls/SchemaSpy 生成文档时,ER 图常常是一堆没有连线的孤岛。这篇讲清 tbls 的 relations 手写与 detectVirtualRelations 五种推断策略各匹配什么、哪里会误判,以及 SchemaSpy 的 implied relationships 与 SchemaMeta 如何纠正,最后给出把推断结果固定进 CI 的做法。
数据库文档
tbls
SchemaSpy
ER图
外键
MySQL
PostgreSQL
ERROR 2061 不是密码错:caching_sha2_password 缓存失效后,非 TLS 连接全掉进 full auth
编程
ERROR 2061 不是密码错:caching_sha2_password 缓存失效后,非 TLS 连接全掉进 full auth
2026-11-11 00:03:50
caching_sha2_password 的 fast auth 依赖服务端内存缓存,缓存一失效就走 full auth,非 TLS 连接随即报 ERROR 2061。本文给缓存失效时机表、RSA 公钥两条路径、JDBC/Go/PHP 驱动差异,以及自研协议客户端漏读 AuthMoreData 导致包错位的真实 PR 案例。
caching_sha2_password
MySQL
认证插件
排障
RSA公钥
数据库
transaction_replay 救不回事务的三处盲区:会话状态重建与 checksum 校验
编程
transaction_replay 救不回事务的三处盲区:会话状态重建与 checksum 校验
2026-11-11 00:03:45
MaxScale readwritesplit 的 transaction_replay 为什么不总能救回事务:事务中途改 SQL_MODE 会让重放的会话状态顺序错位、max_sescmd_history 默认 50 条且被裁剪导致状态不完整、checksum 只看服务器响应看不见外部副作用,附 safe_commit 与幂等落库的做法。
transaction_replay
MaxScale
MariaDB
readwritesplit
数据库代理
读写分离
会话状态
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
…
351
下一页
共 351 页
到第
页
确定