gorm对数据库基表进行分表,如果不存在则创建新的分表
【代码】gorm对数据库旧表进行分表,如果不存在新表则创建表。
·
// 新的表名:m.TimeTableName(time.Now().Unix()),旧的表名:m.TableName()
func (r *ApiLastSpiderTimeRepo) CheckTable() error {
db := mysql.Factories.Default()
m := new(model.ApiLastSpiderTime)
sliceTableName := m.TimeTableName(time.Now().Unix())
if !db.Migrator().HasTable(sliceTableName) {
schema := make(map[string]interface{})
db.Raw(fmt.Sprintf("show create table `%s`", m.TableName())).Scan(&schema)
schemaCreate := schema["Create Table"]
schemaCreateSql, _ := schemaCreate.(string)
sliceSchemaCreateSql := strings.Replace(schemaCreateSql,
fmt.Sprintf("CREATE TABLE `%s`", m.TableName()),
fmt.Sprintf("CREATE TABLE `%s`", sliceTableName), 1)
if err := db.Exec(sliceSchemaCreateSql).Error; err != nil {
return err
}
}
return nil
}
更多推荐
已为社区贡献1条内容
所有评论(0)