mysql 通过CodeFirst.InitTables 涉及到索引的添加,2个表的索引名相同时添加索引失败 返回

SqlSugar 沟通中
7 107
该叫什么 ux 发布于4天前
悬赏:0 飞吻

MySqlDbMaintenance.IsAnyIndexSql 中的sql 脚本:

SELECT count(*) FROM information_schema.statistics WHERE index_name = '{0}' and index_schema = '{1}'


建议增加table_name作为条件

热忱回答7

  • 肯定不能相同

    0 回复
  • 索引名肯定要加上表名

    0 回复
  • ux ux VIP0
    4天前

    事实上,mysql里不同的表,允许index_name相同。虽然我们习惯命名:{表名}_{字段名} 作为index_name,但也不排除有其它原因不这么命名。


    0 回复
  • @ux:sqlsugar是多库为规范设计,支持占位符

    //占位符 普通表:{table}  分表:{split_table} 数据库{db}
     
    //请升级到 5.0.2.3preivew04
    //使用 {db}  进行占位符替换,小写不要有空格
    [SugarIndex("{db}index_codetable1_name",nameof(CodeFirstTable1.Name),OrderByType.Asc)]
     
    //普通表名占位符 
    [SugarIndex("index_{table}_name",nameof(CodeFirstTable1.Name),OrderByType.Asc)]

    0 回复
  • ux ux VIP0
    4天前

    我们这边出现索引重名的情况,并非有意而为之,是因为两个实体之间有继承关系,而SugarIndex这个特性默认是可被继承的,所以,在父实体类上标记的索引特性,被子实体类继承。

    0 回复
  • @ux:继承不影响有占位符

    0 回复
  • ux ux VIP0
    1天前

    @fate sta:好的,感谢解答。

    0 回复