chore(db): 部署脚本改用通用 SQL 核对段,兼容 DataGrip
psql 的 \echo 是元命令,DataGrip / DBeaver 不认,整份执行会直接报语法错误。 核对段改用 SELECT '常量' AS "核对项" 输出标签行,任何客户端都能跑 (psql 下效果相同)。同步修正头部说明中「需用 psql」的过期表述。 已在临时库重跑验证:零报错、核对结果与改前一致、重跑幂等。
This commit is contained in:
@ -6,7 +6,7 @@
|
||||
--
|
||||
-- 执行
|
||||
-- docker exec -i <db容器> psql -U <用户> -d <库名> -v ON_ERROR_STOP=1 < 本文件
|
||||
-- (含 \echo 核对段,需用 psql;其他客户端请删掉 \echo 行)
|
||||
-- 脚本不含 psql 专有元命令,psql / DataGrip / DBeaver 均可直接整份执行。
|
||||
--
|
||||
-- 幂等
|
||||
-- 全部 DDL 带 IF NOT EXISTS,可重复执行。
|
||||
@ -274,40 +274,43 @@ COMMIT;
|
||||
|
||||
-- =============================================================================
|
||||
-- 执行后核对
|
||||
--
|
||||
-- ★ 这里刻意**不用 psql 的 \echo**(DataGrip / DBeaver 等客户端不认元命令,
|
||||
-- 会直接报语法错误)。改用 SELECT 输出一行带标签的常量,任何客户端都能跑。
|
||||
-- =============================================================================
|
||||
\echo '=== 1) trans_borrow 四个新列(应 4 行)==='
|
||||
SELECT '=== 1) trans_borrow 四个新列(应 4 行)===' AS "核对项";
|
||||
SELECT column_name, data_type FROM information_schema.columns
|
||||
WHERE table_name = 'trans_borrow'
|
||||
AND column_name IN ('borrower_id','current_holder_id','current_holder_name','dispatch_operator')
|
||||
ORDER BY column_name;
|
||||
|
||||
\echo '=== 2) 两张新表(应 2 行)==='
|
||||
SELECT '=== 2) 两张新表(应 2 行)===' AS "核对项";
|
||||
SELECT table_name FROM information_schema.tables
|
||||
WHERE table_name IN ('trans_borrow_transfer','trans_borrow_return') ORDER BY table_name;
|
||||
|
||||
\echo '=== 3) 索引总数(transfer 应 8 个含主键 / return 应 4 个含主键)==='
|
||||
SELECT '=== 3) 索引总数(transfer 应 8 个含主键 / return 应 4 个含主键)===' AS "核对项";
|
||||
SELECT tablename, count(*) AS 索引数 FROM pg_indexes
|
||||
WHERE tablename IN ('trans_borrow_transfer','trans_borrow_return')
|
||||
GROUP BY tablename ORDER BY tablename;
|
||||
|
||||
\echo '=== 4) 身份锚点回填覆盖率 ==='
|
||||
SELECT '=== 4) 身份锚点回填覆盖率 ===' AS "核对项";
|
||||
SELECT count(*) AS 借用总行数,
|
||||
count(borrower_id) AS 已锚定借用人,
|
||||
count(*) FILTER (WHERE is_returned = FALSE) AS 未归还行,
|
||||
count(current_holder_id) AS 已锚定持有人
|
||||
FROM trans_borrow;
|
||||
|
||||
\echo '=== 5) 同单多持有人单数(部分转交的正常形态,无需处理)==='
|
||||
SELECT '=== 5) 同单多持有人单数(部分转交的正常形态,无需处理)===' AS "核对项";
|
||||
SELECT count(*) AS 拆分持有单数 FROM (
|
||||
SELECT borrow_no FROM trans_borrow WHERE is_returned = FALSE
|
||||
GROUP BY borrow_no HAVING count(DISTINCT current_holder_id) > 1
|
||||
) t;
|
||||
|
||||
\echo '=== 6) 遗留拼接痕迹(应为 0)==='
|
||||
SELECT '=== 6) 遗留拼接痕迹(应为 0)===' AS "核对项";
|
||||
SELECT count(*) AS 残留拼接 FROM trans_borrow_transfer
|
||||
WHERE remark LIKE '%[拒绝原因] %';
|
||||
|
||||
\echo '=== 7) 待告知发起方的拒绝(存量已标记,应为 0)==='
|
||||
SELECT '=== 7) 待告知发起方的拒绝(存量已标记,应为 0)===' AS "核对项";
|
||||
SELECT count(*) AS 待告知 FROM trans_borrow_transfer
|
||||
WHERE status = 'REJECTED' AND reject_seen_at IS NULL;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user