1
系统开发/踩坑记录
xiaowu edited this page 2026-08-25 15:16:44 +08:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

踩坑记录(必读)

1. Tushare 接口名不能想当然加 _vip ⚠️⚠️⚠️

  • daily_vip → 40101 接口名不存在(Tushare 根本没这个接口)
  • adj_factor_vip → 40101 不存在
  • daily_basic_vip → 40203 存在但无权限
  • income_vip / cashflow_vip / balancesheet_vip / fina_indicator_vip → 真实存在,5000积分可用
  • 教训:写代码前先跑 tushare_api_check.py 自检
  • 修复记录:importer.py 7 处 vip 改回普通接口(commit 0b19869)

2. 普通接口按 trade_date 拉全市场需要积分门槛

  • daily/daily_basic/adj_factor 按 trade_date 全市场:需 2000 积分
  • 按 ts_code 单只拉:120 积分即可
  • 当前账号 5120 积分,两种方式都可用

3. postgres 超级用户是 sally,不是 postgres

  • psql -U postgres → 报 role "postgres" does not exist
  • 正确:psql -U sally

4. 表 owner 问题(must be owner of table/view)

  • 现象:importer 跑 DDL(CREATE INDEX)报 InsufficientPrivilege: must be owner
  • 原因:GRANT ALL 不等于 owner;DDL 必须 owner 执行
  • 修复(sally 执行,一次转所有表/视图/序列):
DO $$
DECLARE r record;
BEGIN
  FOR r IN SELECT c.relname, c.relkind
           FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace
           WHERE n.nspname = 'public' AND c.relkind IN ('r','v','m','S')
  LOOP
    EXECUTE format('ALTER %s public.%I OWNER TO xiaoqiang_w',
                   CASE r.relkind WHEN 'r' THEN 'TABLE'
                                  WHEN 'v' THEN 'VIEW'
                                  WHEN 'm' THEN 'MATERIALIZED VIEW'
                                  WHEN 'S' THEN 'SEQUENCE' END,
                   r.relname);
  END LOOP;
END $$;

5. Debian 12 容器 pip 被 PEP 668 拦截

  • 现象:error: externally-managed-environment
  • 解决:建 venv(python3 -m venv /opt/quant-venv),或 --break-system-packages(不推荐)
  • 注意:venv 里的脚本要用 /opt/quant-venv/bin/python 跑

6. 目录权限导致写日志失败

  • 现象:PermissionError: import_data.log
  • 原因:仓库是 root clone 的,node 用户写不了
  • 解决:chown -R node:node /home/node/quanxiel

7. 终端粘贴带提示符

  • 现象:-sh: sally@NAS-Sally:~$: command not found
  • 原因:复制命令时把前面的提示符也复制了
  • 解决:只复制命令本身

8. 历史遗留:数据库数据只到 2025-12-31

  • 之前全量导入的 END_DATE 默认是 2025 年底
  • 2026-08-15 增量导入实际补了 2026-01-01 ~ 08-14 约 149 个交易日
  • 教训:检查数据完整性用 check_daily_progress(),别假设数据是全的