{"record":{"id":"f11c9e5e90e71d1b","repo":"apache/shardingsphere","slug":"0-f11c9e","errorCode":"0","errorMessage":"Can not register storage units '%s'.","messagePattern":"Can not register storage units '(.+?)'\\.","errorType":"exception","errorClass":"StorageUnitsOperateException","httpStatus":null,"severity":"error","filePath":"infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java","lineNumber":70,"sourceCode":"    \n    @Override\n    public void executeUpdate(final RegisterStorageUnitStatement sqlStatement, final ContextManager contextManager) {\n        checkDataSource(sqlStatement, contextManager);\n        Map<String, DataSourcePoolProperties> propsMap = DataSourceSegmentsConverter.convert(database.getProtocolType(), sqlStatement.getStorageUnits());\n        if (sqlStatement.isIfNotExists()) {\n            Collection<String> currentStorageUnits = getCurrentStorageUnitNames(contextManager);\n            Collection<String> logicalDataSourceNames = getLogicalDataSourceNames();\n            propsMap.keySet().removeIf(currentStorageUnits::contains);\n            propsMap.keySet().removeIf(logicalDataSourceNames::contains);\n        }\n        if (propsMap.isEmpty()) {\n            return;\n        }\n        validateHandler.validate(propsMap, getExpectedPrivileges(sqlStatement));\n        try {\n            contextManager.getPersistServiceFacade().getModeFacade().getMetaDataManagerService().registerStorageUnits(database.getName(), propsMap);\n        } catch (final ShardingSphereExternalException ex) {\n            throw new StorageUnitsOperateException(\"register\", propsMap.keySet(), ex);\n        }\n    }\n    \n    private void checkDataSource(final RegisterStorageUnitStatement sqlStatement, final ContextManager contextManager) {\n        if (!sqlStatement.isIfNotExists()) {\n            Collection<String> dataSourceNames = new ArrayList<>(sqlStatement.getStorageUnits().size());\n            checkDuplicatedDataSourceNames(contextManager, dataSourceNames, sqlStatement);\n            checkDuplicatedLogicalDataSourceNames(dataSourceNames);\n        }\n    }\n    \n    private void checkDuplicatedDataSourceNames(final ContextManager contextManager, final Collection<String> dataSourceNames, final RegisterStorageUnitStatement sqlStatement) {\n        Collection<String> duplicatedDataSourceNames = new HashSet<>(sqlStatement.getStorageUnits().size(), 1F);\n        for (DataSourceSegment each : sqlStatement.getStorageUnits()) {\n            if (dataSourceNames.contains(each.getName()) || getCurrentStorageUnitNames(contextManager).contains(each.getName())) {\n                duplicatedDataSourceNames.add(each.getName());\n            }\n            dataSourceNames.add(each.getName());","sourceCodeStart":52,"sourceCodeEnd":88,"githubUrl":"https://github.com/apache/shardingsphere/blob/e952770a215630a3659c75d64369168cd3e26b82/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java#L52-L88","documentation":"Error \"Can not register storage units '%s'.\" thrown in apache/shardingsphere.","triggerScenarios":"REGISTER STORAGE UNIT fails because of duplicate names or invalid data source configuration.","commonSituations":"Registering a storage unit with a name already in use, or with a JDBC URL/credentials that fail validation.","solutions":["Use a storage unit name that is not already registered.","Fix invalid data source properties (URL, credentials, driver) in the registration statement.","Unregister the conflicting storage unit first if replacement is intended."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e952770a215630a3659c75d64369168cd3e26b82","analyzedAt":"2026-08-14T13:54:53.392Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}