|
|
@@ -102,20 +102,28 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoMapper, TenantI
|
|
|
} catch (CustomException e) {
|
|
|
throw e;
|
|
|
} catch (Exception e) {
|
|
|
+ // 保留原始异常,避免被回滚时的异常覆盖
|
|
|
+ log.error("创建租户失败,tenantCode={}, dbName={}", tenantInfo.getTenantCode(), tenantInfo.getDbName(), e);
|
|
|
+
|
|
|
try {
|
|
|
- // 删除租户数据库
|
|
|
- TenantUtils.dropDatabase(conn, tenantInfo.getDbName());
|
|
|
+ // 仅在连接可用时尝试回滚数据库
|
|
|
+ if (conn != null) {
|
|
|
+ TenantUtils.dropDatabase(conn, tenantInfo.getDbName());
|
|
|
+ }
|
|
|
} catch (Exception ex) {
|
|
|
- log.info("删除租户数据库失败:" + ex.getMessage());
|
|
|
- throw new RuntimeException(ex);
|
|
|
+ log.warn("删除租户数据库失败,tenantCode={}, dbName={}", tenantInfo.getTenantCode(), tenantInfo.getDbName(), ex);
|
|
|
}
|
|
|
|
|
|
- // 删除租户信息
|
|
|
- LambdaQueryWrapper<TenantInfo> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq(TenantInfo::getTenantCode, tenantInfo.getTenantCode());
|
|
|
- baseMapper.delete(queryWrapper);
|
|
|
+ try {
|
|
|
+ // 删除可能已插入的租户记录
|
|
|
+ LambdaQueryWrapper<TenantInfo> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(TenantInfo::getTenantCode, tenantInfo.getTenantCode());
|
|
|
+ baseMapper.delete(queryWrapper);
|
|
|
+ } catch (Exception ex) {
|
|
|
+ log.warn("删除租户信息失败,tenantCode={}", tenantInfo.getTenantCode(), ex);
|
|
|
+ }
|
|
|
|
|
|
- throw new RuntimeException("创建租户失败:" + e.getMessage());
|
|
|
+ throw new RuntimeException("创建租户失败:" + e.getMessage(), e);
|
|
|
} finally {
|
|
|
try {
|
|
|
if (conn != null) conn.close();
|