{"record":{"id":"96765e45d6ef1ceb","repo":"alibaba/nacos","slug":"databasedialect-plugin-is-disabled-databasetyp","errorCode":null,"errorMessage":"DatabaseDialect plugin is disabled:  + databaseType + . Please enable it via plugin management API.","messagePattern":"DatabaseDialect plugin is disabled:  \\+ databaseType \\+ \\. Please enable it via plugin management API\\.","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/manager/DatabaseDialectManager.java","lineNumber":73,"sourceCode":"        \n        for (DatabaseDialect dialect : dialectList) {\n            String dialectType = dialect == null ? null : dialect.getType();\n            PluginRegistryUtils.registerFirst(SUPPORT_DIALECT_MAP,\n                PluginType.DATASOURCE_DIALECT.getType(), dialectType, dialect, LOGGER);\n        }\n        if (SUPPORT_DIALECT_MAP.isEmpty()) {\n            LOGGER.warn(\n                \"[DatasourceDialectManager] Load DatabaseDialect fail, No DatabaseDialect implements\");\n        }\n    }\n    \n    public DatabaseDialect getDialect(String databaseType) {\n        // Check if plugin is enabled\n        if (!PluginStateCheckerHolder.isPluginEnabled(PluginType.DATASOURCE_DIALECT.getType(),\n            databaseType)) {\n            LOGGER.debug(\"[DatabaseDialectManager] Plugin DATASOURCE_DIALECT:{} is disabled\",\n                databaseType);\n            throw new IllegalStateException(\n                \"DatabaseDialect plugin is disabled: \" + databaseType\n                    + \". Please enable it via plugin management API.\");\n        }\n        \n        DatabaseDialect databaseDialect = SUPPORT_DIALECT_MAP.get(databaseType);\n        if (databaseDialect == null) {\n            throw new IllegalStateException(\n                \"No DatabaseDialect implementation found for selected type: \" + databaseType\n                    + \". Please ensure the selected datasource plugin is loaded.\");\n        }\n        return databaseDialect;\n    }\n    \n    /**\n     * Get DatasourceDialectManager instance.\n     *\n     * @return DataSourceDialectProvider\n     */","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/alibaba/nacos/blob/9b989acdf181d00898f2e8839257bb2b2a3cefe3/plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/manager/DatabaseDialectManager.java#L55-L91","documentation":"Thrown by DatabaseDialectManager.getDialect as IllegalStateException when PluginStateCheckerHolder reports the DATASOURCE_DIALECT plugin for the given databaseType is disabled. The dialect implementation may exist in SUPPORT_DIALECT_MAP but is gated by the plugin state checker, so it cannot be used until re-enabled.","triggerScenarios":"Calling getDialect(databaseType) when the datasource-dialect plugin for that type has been disabled via the plugin management API. Reached by SQL building/pagination components that need dialect-specific SQL.","commonSituations":"An operator disabling a dialect plugin through the plugin management API and then issuing queries that require that dialect; plugin state not restored after maintenance; misconfigured plugin enablement after an upgrade.","solutions":["Re-enable the DATASOURCE_DIALECT plugin for the databaseType via the plugin management API.","Verify the plugin state with the plugin management/status endpoint before issuing queries.","Ensure startup plugin-state configuration does not disable a dialect that the deployment actively uses."],"exampleFix":"// before: dialect plugin disabled\nmanager.getDialect(\"mysql\"); // -> IllegalStateException disabled\n\n// after: re-enable via plugin management API\n// POST /v3/admin/plugin/enable { type:\"DATASOURCE_DIALECT\", name:\"mysql\" }\nmanager.getDialect(\"mysql\");","handlingStrategy":"validation","validationCode":"if (!PluginStateCheckerHolder.isPluginEnabled(\n        PluginType.DATASOURCE_DIALECT.getType(), databaseType)) {\n    // re-enable via plugin management API before proceeding\n}","typeGuard":"static boolean dialectEnabled(String type) {\n    return PluginStateCheckerHolder.isPluginEnabled(\n        PluginType.DATASOURCE_DIALECT.getType(), type);\n}","tryCatchPattern":"try {\n    return manager.getDialect(type);\n} catch (IllegalStateException e) {\n    if (e.getMessage().contains(\"is disabled\")) {\n        // enable plugin then retry\n    } else throw e;\n}","preventionTips":["Keep plugin enablement aligned with configured datasource types.","Verify plugin state via the management API before issuing queries.","Restore plugin state after maintenance windows."],"tags":["plugin","datasource","dialect","disabled","illegal-state"],"backgroundTag":null,"analyzedSha":"9b989acdf181d00898f2e8839257bb2b2a3cefe3","analyzedAt":"2026-08-14T07:17:31.569Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}