You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何实现多用户独立的Kodi观看标记字段且无需修改Kodi代码

可行性结论

你要求的「Kodi侧查询语句无改动、MySQL按登录账号返回不同seen字段值」的需求完全可实现,无需修改Kodi源码,也无需部署多套MySQL实例,具体落地方案如下:

方案1:MySQL视图+用户关联表无侵入方案(最符合需求)

核心原理是用同名视图替代原业务表,结合MySQL内置CURRENT_USER()函数动态获取当前登录账号,关联不同用户的观看状态数据,Kodi侧完全感知不到底层变化。
具体操作步骤:

  • 第一步:拆分原表结构
    假设存储媒体路径的原表名为media_files,原包含file_id(主键)、file_path、seen等字段,先做如下调整:
    1. 将原表重命名为media_files_base,删除原表中的seen字段
    2. 新建用户观看状态关联表user_watch_status,字段设置为:
      • user_name varchar(64):存储MySQL登录用户名
      • file_id int:关联media_files_base的文件主键
      • seen tinyint(1):对应用户的观看标记
      • 联合主键设置为(user_name, file_id),避免重复数据
  • 第二步:创建与原表同名的视图
    执行以下SQL创建视图,替代原表对外提供服务:
    CREATE VIEW media_files AS
    SELECT 
      base.file_id,
      base.file_path,
      -- 此处添加原表所有其他需要返回的字段
      IFNULL(status.seen, 0) AS seen
    FROM media_files_base base
    LEFT JOIN user_watch_status status 
      ON base.file_id = status.file_id 
      AND status.user_name = SUBSTRING_INDEX(CURRENT_USER(), '@', 1);
    
  • 第三步:兼容Kodi的更新操作
    如果Kodi需要更新seen字段,给视图添加INSTEAD OF触发器,自动将状态写入关联表:
    DELIMITER //
    CREATE TRIGGER media_files_seen_update
    INSTEAD OF UPDATE ON media_files
    FOR EACH ROW
    BEGIN
      -- 仅更新seen字段时写入用户状态表
      IF OLD.seen != NEW.seen THEN
        REPLACE INTO user_watch_status (user_name, file_id, seen)
        VALUES (SUBSTRING_INDEX(CURRENT_USER(), '@', 1), OLD.file_id, NEW.seen);
      END IF;
      -- 其他字段更新同步到基础表
      UPDATE media_files_base 
      SET file_path = NEW.file_path /* 此处添加其他需要更新的字段 */
      WHERE file_id = OLD.file_id;
    END //
    DELIMITER ;
    
  • 第四步:配置用户权限
    给每个家人创建独立的MySQL登录账号,仅开放media_files视图的读写权限,关闭基础表、关联表的访问权限即可。
方案2:低门槛替代方案(适配性更强)

如果Kodi的复杂查询逻辑导致视图触发器适配成本高,可以选择以下更简单的落地方案:

  • 单实例多库方案:同一个MySQL实例下为每个用户创建独立的Kodi库,库名加用户名后缀,初始批量导入媒体路径基础数据,仅需要修改各用户Kodi客户端的数据库连接配置中的库名即可,无需修改源码。
  • Kodi原生多用户插件方案:直接安装Kodi官方仓库的多用户管理插件,插件会自动处理观看状态、播放进度等数据的用户隔离,无需操作数据库。

内容的提问来源于stack exchange,提问作者user9118749

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:24:04