Error 1054 (42S22): Unknown column 'table_name' in 'where clause'
SELECT COUNT(*) FROM information_schema.check_constraints
WHERE constraint_schema = DATABASE()
AND table_name = 'purchase_task'
AND constraint_name = 'ck_purchase_task_spec_source'
MySQL 8.4 的 information_schema.CHECK_CONSTRAINTS 只有 CONSTRAINT_CATALOG、CONSTRAINT_SCHEMA、CONSTRAINT_NAME、CHECK_CLAUSE,没有 TABLE_NAME。表归属需要通过 TABLE_CONSTRAINTS 获取。
缺陷由 #135 提交 679f469 的 ensureMySQLDirectSelectConstraint 引入。SQLite 测试会因非 MySQL 方言直接跳过该分支,现有全量验证也没有实际连接 MySQL 8.4 执行启动迁移,因此未发现。
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
所属与来源
当前事实与根因
本机配置校验正常:MySQL
127.0.0.1:3307/goauto,Server 8010,Web 9527。两个端口均无监听。server/temp/startup-migration.log显示服务端在启动迁移阶段失败:MySQL 8.4 的
information_schema.CHECK_CONSTRAINTS只有CONSTRAINT_CATALOG、CONSTRAINT_SCHEMA、CONSTRAINT_NAME、CHECK_CLAUSE,没有TABLE_NAME。表归属需要通过TABLE_CONSTRAINTS获取。缺陷由 #135 提交
679f469的ensureMySQLDirectSelectConstraint引入。SQLite 测试会因非 MySQL 方言直接跳过该分支,现有全量验证也没有实际连接 MySQL 8.4 执行启动迁移,因此未发现。当前本机数据库为可恢复的部分迁移状态:
purchase_task.task_type已存在,默认值syb_order,非空;ck_purchase_task_spec_source仍存在,未被删除;direct_select;目标
ck_purchase_task_spec_source安全扩展为包含direct_select。CHECK_CONSTRAINTS.TABLE_NAME。非目标
实施方案
information_schema.TABLE_CONSTRAINTS。CHECK_CLAUSE时,以 schema、constraint name 联接TABLE_CONSTRAINTS和CHECK_CONSTRAINTS,并限定purchase_task与 CHECK 类型。direct_select时不修改;数据库与安全门禁
验收标准
CHECK_CONSTRAINTS.TABLE_NAME。ck_purchase_task_spec_source包含direct_select。验证方式
go test ./app/goauto/migrations/... ./cmd/migrate/migration/version-local/...go build ./...python dev_scripts/harness.py check --strict/api/v1/health与 Web 页面。文档影响
无长期文档影响:仅修复 MySQL 8.4 元数据查询兼容性,不改变配置、数据结构、接口、业务规则或运维命令;完成后跳过 Wiki 更新与同步。
状态
实现、自动化验证、本机数据库迁移及 Admin 重启验证均已完成,待用户验收。
实现已推送,等待数据库执行授权
提交:
a6cc1c6 fix(migrations): support MySQL 8.4 checks (#140)。TABLE_CONSTRAINTS联接CHECK_CONSTRAINTS,不再引用 MySQL 8.4 不存在的CHECK_CONSTRAINTS.TABLE_NAME。实施期间 2026-08-29 08:43:33 出现一次外部/手工启动尝试,使用工作区新源码成功通过了本缺陷点;当前只读核验确认
ck_purchase_task_spec_source已包含direct_select,且迁移版本1787885300000已记录。该启动随后被独立缺陷 #141 阻断,Server/Web 仍未启动。无长期文档影响,跳过 Wiki 更新与同步。工单保持打开,待 #141 修复获授权执行并完成 Admin 联合重启验证。
本机迁移与 Admin 重启验证完成,待验收
用户于 2026-08-29 明确授权 #140、#141 执行本机数据库迁移、权限写入并重启 Admin。
a6cc1c6。CHECK_CONSTRAINTS.TABLE_NAME错误。1787885300000已记录;ck_purchase_task_spec_source在线查询确认包含direct_select。/api/v1/health返回 HTTP 200。/#/dashboard,页面标题“工作台 - 自动采集采购后台”,控制台无错误。工单进入待验收。
用户于 2026-08-29 明确确认本工单通过验收。验收结论已记录,现关闭工单。没有新的长期事实变化,本次不重复同步 Wiki。