持续支持mysql作为secretpad的后端存储
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>
好的,收到您的反馈。感谢您对隐语社区的支持
你好,辛苦提供下您的mysql版本,我们希望您提供更佳完整的信息,谢谢
mysql> select version(); +-----------+ | version() | +-----------+ | 8.1.0 | +-----------+
mysql 不支持try (Statement statement = connection.createStatement()) { statement.execute("PRAGMA journal_mode=WAL;"); }
最新的mysql 的sql文件,未有最新的SQL改动的语句
‘最新的mysql 的sql文件,未有最新的SQL改动的语句’ 具体是哪个分支的代码呢?
最新的mysql 的sql文件,未有最新的SQL改动的语句‘最新的mysql 的sql文件,未有最新的SQL改动的语句’ 具体是哪个分支的代码呢?
master 分支吧;就p2p模式来说,在config/schema/p2p目录下,有0.8的Sqilte的表改动语句;但是在schemamysql中没有任何变动记录
flyway的location路径下有v2版本,我理解flyway可以帮忙自动升级的哈 https://www.secretflow.org.cn/zh-CN/docs/secretpad/v0.8.1b0/development/db_version
我在使用secretpad 0.12.0b0分支。正在尝试切换到mysql。遇到了一样的问题。
-
发现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中
-
0.12.0b0增加了quartz 做任务调度,因此需要创建quartz相关的库表。
-
同时datasource的格式要按照sqlite版的格式修改,而不是按照注释掉的mysql版本进行修改。
-
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
我在使用secretpad 0.12.0b0分支。正在尝试切换到mysql。遇到了一样的问题。
发现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中
0.12.0b0增加了quartz 做任务调度,因此需要创建quartz相关的库表。
同时datasource的格式要按照sqlite版的格式修改,而不是按照注释掉的mysql版本进行修改。
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);
请问是否已经用最新版本,切换数据源成功
您好,我想请问一下,如果secretpad从源码编译的方式部署,一开始就选择mysql作为后端存储,需要对现有的配置或者代码做哪些步骤的修改呢?