secretpad icon indicating copy to clipboard operation
secretpad copied to clipboard

持续支持mysql作为secretpad的后端存储

Open john8628 opened this issue 1 year ago • 10 comments

Issue Type

Feature

Have you searched for existing issues?

Yes

Link to Relevant Documentation

https://www.secretflow.org.cn/zh-CN/docs/secretpad/v0.8.1b0/development/SUPPORT_MYSQL

Question Details

目前secretpad在特定的版本,支持sqlite转换mysql;但是最新的secretpad版本使用mysql的化;需要注意如下配置
- flyway的配置需要指向mysql的SQL目录;spring.flyway.location
- 最新的mysql 的sql文件,未有最新的SQL改动的语句
希望社区,能够持续支持mysql作为secretpad的后端存储

注意:最新版本的flyway不在支持mysql,参见[文档](https://blog.csdn.net/cgs1999/article/details/127432058),需要增加
<dependency>
   <groupId>org.flywaydb</groupId>
   <artifactId>flyway-mysql</artifactId>
</dependency>

john8628 avatar Jul 05 '24 03:07 john8628

好的,收到您的反馈。感谢您对隐语社区的支持

aokaokd avatar Jul 05 '24 07:07 aokaokd

你好,辛苦提供下您的mysql版本,我们希望您提供更佳完整的信息,谢谢

aokaokd avatar Jul 05 '24 09:07 aokaokd

mysql> select version(); +-----------+ | version() | +-----------+ | 8.1.0 | +-----------+

john8628 avatar Jul 05 '24 10:07 john8628

mysql 不支持try (Statement statement = connection.createStatement()) { statement.execute("PRAGMA journal_mode=WAL;"); }

john8628 avatar Jul 09 '24 01:07 john8628

最新的mysql 的sql文件,未有最新的SQL改动的语句

‘最新的mysql 的sql文件,未有最新的SQL改动的语句’ 具体是哪个分支的代码呢?

zimu-yuxi avatar Jul 09 '24 02:07 zimu-yuxi

最新的mysql 的sql文件,未有最新的SQL改动的语句

‘最新的mysql 的sql文件,未有最新的SQL改动的语句’ 具体是哪个分支的代码呢?

master 分支吧;就p2p模式来说,在config/schema/p2p目录下,有0.8的Sqilte的表改动语句;但是在schemamysql中没有任何变动记录

john8628 avatar Jul 09 '24 02:07 john8628

flyway的location路径下有v2版本,我理解flyway可以帮忙自动升级的哈 https://www.secretflow.org.cn/zh-CN/docs/secretpad/v0.8.1b0/development/db_version

zimu-yuxi avatar Jul 17 '24 08:07 zimu-yuxi

我在使用secretpad 0.12.0b0分支。正在尝试切换到mysql。遇到了一样的问题。

  1. 发现schemamysql中缺少一些字段

    • node 表中缺少 protocol、inst_token_state
    • project_job_task 表中缺少 extra_info
    • project_approval_config 表中缺少 participant_node_info
    • user_accounts 表中缺少 inst_id
    • autoincrement 拼写错误

    希望能把sqlite中alter后新增的字段,及时合并到schemamysql中

  2. 0.12.0b0增加了quartz 做任务调度,因此需要创建quartz相关的库表。

  3. 同时datasource的格式要按照sqlite版的格式修改,而不是按照注释掉的mysql版本进行修改。

  4. mysql 中的库名应该为 main,因为代码中有些语句中使用的库名为main。这里我建议join的写法可以把库名去掉。 https://github.com/secretflow/secretpad/blob/8fb060e12e61daf3c0474fb330b4834ae5b6f4eb/secretpad-persistence/src/main/java/org/secretflow/secretpad/persistence/repository/ProjectJobTaskRepository.java#L46-L47

asdfsx avatar Mar 19 '25 04:03 asdfsx

我在使用secretpad 0.12.0b0分支。正在尝试切换到mysql。遇到了一样的问题。

  1. 发现schemamysql中缺少一些字段

    • node 表中缺少 protocol、inst_token_state
    • project_job_task 表中缺少 extra_info
    • project_approval_config 表中缺少 participant_node_info
    • user_accounts 表中缺少 inst_id
    • autoincrement 拼写错误

    希望能把sqlite中alter后新增的字段,及时合并到schemamysql中

  2. 0.12.0b0增加了quartz 做任务调度,因此需要创建quartz相关的库表。

  3. 同时datasource的格式要按照sqlite版的格式修改,而不是按照注释掉的mysql版本进行修改。

  4. mysql 中的库名应该为 main,因为代码中有些语句中使用的库名为main。这里我建议join的写法可以把库名去掉。

      [secretpad/secretpad-persistence/src/main/java/org/secretflow/secretpad/persistence/repository/ProjectJobTaskRepository.java](https://github.com/secretflow/secretpad/blob/8fb060e12e61daf3c0474fb330b4834ae5b6f4eb/secretpad-persistence/src/main/java/org/secretflow/secretpad/persistence/repository/ProjectJobTaskRepository.java#L46-L47)
    
    
        Lines 46 to 47
      in
      [8fb060e](/secretflow/secretpad/commit/8fb060e12e61daf3c0474fb330b4834ae5b6f4eb)
    
    
    
    
    
    
    
           @Query(value = "select t.* from project_job_task t join main.project_job j on t.job_id=j.job_id where t.project_id=:projectId and t.graph_node_id=:graphNodeId order by t.id desc limit 1", nativeQuery = true) 
    
    
    
    
           Optional<ProjectTaskDO> findLatestTasks(@Param("projectId") String projectId, @Param("graphNodeId") String graphNodeId);
    

请问是否已经用最新版本,切换数据源成功

Bossama777 avatar May 13 '25 07:05 Bossama777

您好,我想请问一下,如果secretpad从源码编译的方式部署,一开始就选择mysql作为后端存储,需要对现有的配置或者代码做哪些步骤的修改呢?

sasfc avatar Jun 10 '25 08:06 sasfc