1 changed files with 0 additions and 156 deletions
@ -1,156 +0,0 @@ |
|||||
-- ============================================================================= |
|
||||
-- 英文站新闻数据修复(同一批导入 ID 整体偏了 338) |
|
||||
-- |
|
||||
-- A. hc_category_sub_content:栏目关联挂到了产品/解决方案 |
|
||||
-- B. hc_demo_product:正文扩展表 sub_id 同样偏了 338 → 详情页「内容不存在」 |
|
||||
-- C. hc_route:Company News(790) 详情路由 pattern 误为 d+(缺 \)→ /en/gongsixinwen/3310.html 报 code=-1 |
|
||||
-- |
|
||||
-- 真实新闻 ID = 错误 ID + 338(本地 68 条全部匹配) |
|
||||
-- 栏目:788 News & Updates;子栏目 789/790/791/1097 |
|
||||
-- ============================================================================= |
|
||||
-- 执行顺序:先诊断 A/B/C → 确认 offset=338 → 备份 → 修复 → 校验 |
|
||||
-- 若线上 offset 不是 338,不要直接跑修复 |
|
||||
-- 修复 C 后还需更新 route/{siteId}_en_frontend.php 中 pattern 为 \d+,或后台重新生成路由 |
|
||||
-- ============================================================================= |
|
||||
|
|
||||
-- ############################################################################ |
|
||||
-- A. 栏目关联表 hc_category_sub_content |
|
||||
-- ############################################################################ |
|
||||
|
|
||||
-- A1. 诊断 |
|
||||
SELECT COUNT(*) AS dirty_cnt |
|
||||
FROM hc_category_sub_content csc |
|
||||
JOIN hc_sub_content sc ON sc.id = csc.sub_content_id |
|
||||
WHERE csc.category_id IN (790, 791) |
|
||||
AND sc.category_id NOT IN (788, 789, 790, 791, 1097); |
|
||||
|
|
||||
SELECT COUNT(*) AS matched_offset_338 |
|
||||
FROM hc_category_sub_content csc |
|
||||
JOIN hc_sub_content wrong ON wrong.id = csc.sub_content_id |
|
||||
JOIN hc_sub_content right_sc ON right_sc.id = csc.sub_content_id + 338 |
|
||||
AND right_sc.category_id = csc.category_id |
|
||||
AND right_sc.lang = 'en' |
|
||||
WHERE csc.category_id IN (790, 791) |
|
||||
AND wrong.category_id NOT IN (788, 789, 790, 791, 1097); |
|
||||
|
|
||||
-- ★ 仅当 dirty_cnt = matched_offset_338 时再执行 A2/A3 |
|
||||
|
|
||||
-- A2. 备份 |
|
||||
CREATE TABLE IF NOT EXISTS hc_category_sub_content_bak_news_pivot_20260909 AS |
|
||||
SELECT csc.* |
|
||||
FROM hc_category_sub_content csc |
|
||||
JOIN hc_sub_content sc ON sc.id = csc.sub_content_id |
|
||||
WHERE csc.category_id IN (790, 791) |
|
||||
AND sc.category_id NOT IN (788, 789, 790, 791, 1097); |
|
||||
|
|
||||
-- A3. 修复 |
|
||||
START TRANSACTION; |
|
||||
|
|
||||
UPDATE hc_category_sub_content csc |
|
||||
JOIN hc_sub_content wrong ON wrong.id = csc.sub_content_id |
|
||||
JOIN hc_sub_content right_sc ON right_sc.id = csc.sub_content_id + 338 |
|
||||
AND right_sc.category_id = csc.category_id |
|
||||
AND right_sc.lang = 'en' |
|
||||
SET csc.sub_content_id = csc.sub_content_id + 338 |
|
||||
WHERE csc.category_id IN (790, 791) |
|
||||
AND wrong.category_id NOT IN (788, 789, 790, 791, 1097); |
|
||||
|
|
||||
COMMIT; |
|
||||
|
|
||||
-- A4. 校验(dirty_left 应为 0) |
|
||||
SELECT COUNT(*) AS dirty_left |
|
||||
FROM hc_category_sub_content csc |
|
||||
JOIN hc_sub_content sc ON sc.id = csc.sub_content_id |
|
||||
WHERE csc.category_id IN (790, 791) |
|
||||
AND sc.category_id NOT IN (788, 789, 790, 791, 1097); |
|
||||
|
|
||||
|
|
||||
-- ############################################################################ |
|
||||
-- B. 正文扩展表 hc_demo_product(详情页依赖) |
|
||||
-- ############################################################################ |
|
||||
-- 现象:路由通了后仍报「内容不存在」 |
|
||||
-- 原因:英文新闻 demo_product.sub_id 指向 2971–3038,应为 3309–3376 |
|
||||
-- 产品 module_id=1 不走 demo_product,改 sub_id 不影响产品页 |
|
||||
|
|
||||
-- B1. 诊断 |
|
||||
SELECT COUNT(*) AS wrong_main_cnt |
|
||||
FROM hc_demo_product dp |
|
||||
JOIN hc_sub_content sc ON sc.id = dp.sub_id |
|
||||
WHERE dp.lang = 'en' |
|
||||
AND dp.sub_id BETWEEN 2971 AND 3038 |
|
||||
AND sc.category_id NOT IN (788, 789, 790, 791, 1097); |
|
||||
|
|
||||
SELECT COUNT(*) AS matched_main_338 |
|
||||
FROM hc_demo_product dp |
|
||||
JOIN hc_sub_content expect ON expect.id = dp.sub_id + 338 |
|
||||
AND expect.category_id IN (790, 791) |
|
||||
AND expect.lang = 'en' |
|
||||
WHERE dp.lang = 'en' |
|
||||
AND dp.sub_id BETWEEN 2971 AND 3038; |
|
||||
|
|
||||
-- ★ 仅当 wrong_main_cnt = matched_main_338 时再执行 B2/B3 |
|
||||
|
|
||||
-- B2. 备份 |
|
||||
CREATE TABLE IF NOT EXISTS hc_demo_product_bak_news_subid_20260909 AS |
|
||||
SELECT dp.* |
|
||||
FROM hc_demo_product dp |
|
||||
JOIN hc_sub_content expect ON expect.id = dp.sub_id + 338 |
|
||||
AND expect.category_id IN (790, 791) |
|
||||
AND expect.lang = 'en' |
|
||||
WHERE dp.lang = 'en' |
|
||||
AND dp.sub_id BETWEEN 2971 AND 3038; |
|
||||
|
|
||||
-- B3. 修复 |
|
||||
START TRANSACTION; |
|
||||
|
|
||||
UPDATE hc_demo_product dp |
|
||||
JOIN hc_sub_content expect ON expect.id = dp.sub_id + 338 |
|
||||
AND expect.category_id IN (790, 791) |
|
||||
AND expect.lang = 'en' |
|
||||
SET dp.sub_id = dp.sub_id + 338 |
|
||||
WHERE dp.lang = 'en' |
|
||||
AND dp.sub_id BETWEEN 2971 AND 3038; |
|
||||
|
|
||||
COMMIT; |
|
||||
|
|
||||
-- B4. 校验 |
|
||||
SELECT COUNT(*) AS en_news_main |
|
||||
FROM hc_demo_product dp |
|
||||
JOIN hc_sub_content sc ON sc.id = dp.sub_id |
|
||||
WHERE sc.category_id IN (790, 791) AND sc.lang = 'en'; |
|
||||
|
|
||||
SELECT id, sub_id FROM hc_demo_product WHERE sub_id IN (3309, 3310); |
|
||||
|
|
||||
|
|
||||
-- ############################################################################ |
|
||||
-- C. 英文 Company News 详情路由 pattern |
|
||||
-- ############################################################################ |
|
||||
-- 现象:/en/gongsixinwen/3310.html → {"code":-1,"data":[],"msg":""} |
|
||||
-- 原因:pattern 为 d+ 而非 \d+,数字 ID 匹配失败 |
|
||||
|
|
||||
-- C1. 诊断 |
|
||||
SELECT id, url, full_url, category_id, website_id, lang, pattern |
|
||||
FROM hc_route |
|
||||
WHERE category_id = 790 OR (url LIKE '%gongsixinwen%' AND lang = 'en'); |
|
||||
|
|
||||
-- C2. 备份 |
|
||||
CREATE TABLE IF NOT EXISTS hc_route_bak_gongsixinwen_20260909 AS |
|
||||
SELECT * FROM hc_route WHERE category_id = 790 AND url = '/gongsixinwen/:id'; |
|
||||
|
|
||||
-- C3. 修复:复制兄弟栏目 hangyedongcha 的正确 pattern |
|
||||
UPDATE hc_route r |
|
||||
JOIN hc_route s ON s.full_url = 'Detail/index?cid=789' |
|
||||
AND s.url = '/hangyedongcha/:id' |
|
||||
AND s.website_id = r.website_id |
|
||||
AND s.lang = 'en' |
|
||||
SET r.pattern = s.pattern |
|
||||
WHERE r.category_id = 790 |
|
||||
AND r.url = '/gongsixinwen/:id' |
|
||||
AND r.lang = 'en'; |
|
||||
|
|
||||
-- C4. 校验(pattern 应含 \\d+) |
|
||||
SELECT id, url, pattern FROM hc_route WHERE category_id = 790 AND url = '/gongsixinwen/:id'; |
|
||||
|
|
||||
-- ★ 代码侧:route/1_en_frontend.php、route/4_en_frontend.php |
|
||||
-- /gongsixinwen/:id 的 pattern 必须是 '\d+' 不是 'd+' |
|
||||
-- 改完清 runtime/cache,或后台重新保存栏目生成路由 |
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue