开发/生产环境
我们日常开发中,会遇到一个问题:生产环境无法通过程序对表结构做自动维护。
原因有很多,数据库账号没有DDL权限、上线流程要求数据库的改动必须走审批、等等......
所以最佳实践方案是:
1、开发环境开启AutoTable,AutoTable运行过程中,自动记录实体变更过程中产生的SQL。
2、然后生产环境关闭AutoTable,上线前研发人员将开发环境中AutoTable记录的SQL递交审批(可自行实现AutoTable的SQL记录接口,自定义记录方案,比如直接对接内部的SQL审计平台)。
3、SQL审批通过,走上线流程。
spring boot 应用
开发环境
yaml
# 开发环境 application-dev.yml
auto-table:
# 开启自动建表
enable: true
record-sql:
# 开启SQL记录
enable: true
# 当前版本(此处可保持与计划上线的版本号一致,方便管理SQL文件)
version: 1.0.0
# 记录到数据库(如果是多数据源,则会根据不同数据源,记录到不同的库)
record-type: db
yaml
# 开发环境 application-dev.yml
auto-table:
# 开启自动建表
enable: true
record-sql:
# 开启SQL记录
enable: true
# 当前版本(此处可保持与计划上线的版本号一致,方便管理SQL文件)
version: 1.0.0
# 记录到文件
record-type: file
# 文件夹位置
folder-path: /Users/don/Downloads/sqlLogs
完整配置及介绍见recordSql配置
生产环境
yaml
# 生产环境 application-prod.yml,关闭自动建表
auto-table:
enable: false
普通 java 应用
开发环境
java
// 配置信息
AutoTableGlobalConfig.PropertyConfig autoTableProperties = new AutoTableGlobalConfig.PropertyConfig();
// 开发环境 启用
autoTableProperties.setEnable(true);
// 记录sql
PropertyConfig.RecordSqlProperties recordSqlProperties = new PropertyConfig.RecordSqlProperties();
recordSqlProperties.setEnable(true);
recordSqlProperties.setRecordType(PropertyConfig.RecordSqlProperties.TypeEnum.db);
recordSqlProperties.setVersion("1.0.0");
autoTableProperties.setRecordSql(recordSqlProperties);
AutoTableGlobalConfig.setAutoTableProperties(autoTableProperties);
生产环境
java
// 配置信息
AutoTableGlobalConfig.PropertyConfig autoTableProperties = new AutoTableGlobalConfig.PropertyConfig();
// 生产环境 关闭
autoTableProperties.setEnable(false);
AutoTableGlobalConfig.setAutoTableProperties(autoTableProperties);