<p>The error appears when you try to unload a plugin that was compiled into MySQL as force_plus_permanent.</p>
<p>MySQL Error 1702 ER_PLUGIN_IS_PERMANENT occurs when you try to UNINSTALL a plugin marked force_plus_permanent. This plugin was loaded at compile time and cannot be removed dynamically. Restart the server without the plugin or recompile MySQL to resolve the issue.</p>
Plugin '%s' is force_plus_permanent and can not be
Error 1702 fires when MySQL rejects an UNINSTALL PLUGIN or INSTALL PLUGIN OFF request because the target plugin was built into the server binary as force_plus_permanent.
The full message is: Plugin '%s' is force_plus_permanent and can not be unloaded. MySQL treats such plugins as core features, so dynamic unloading is blocked for stability and security.
The error surfaces during UNINSTALL PLUGIN, server startup with loose plugin directives, or while disabling a plugin through SQL or configuration files. Because the plugin is compiled as permanent, MySQL safeguards against its removal.
It often appears after upgrading or when administrators attempt to tidy unused plugins without checking their compile-time status.
Fixing requires removing the plugin from the server startup path rather than the running instance. You must restart the server without loading the plugin or rebuild MySQL without it.
For packaged binaries, comment out the plugin loading line in my.cnf, then restart MySQL. For source builds, recompile with the plugin disabled, install, and restart.
If you tried UNINSTALL PLUGIN udf_example and got Error 1702, comment out plugin-load='udf_example.so' in my.cnf and restart.
During Docker image updates, rebuild the image excluding the plugin, then redeploy the container.
Audit plugins before running UNINSTALL statements. Check INFORMATION_SCHEMA.PLUGINS for the PLUGIN_LOAD_OPTION column. Avoid force_plus_permanent when compiling custom plugins unless truly essential.
Maintain a version-controlled my.cnf, and test plugin changes in staging servers before production rollout.
Error 1125 ER_PLUGIN_IS_NOT_LOADED arises when uninstalling a non-loaded plugin. Validate plugin status first.
Error 1538 ER_CANT_OPEN_LIBRARY occurs when MySQL cannot locate a shared object file. Verify plugin path and permissions.
The plugin was built into the server binary with a permanent flag, blocking dynamic unloads.
my.cnf or command-line options hard-load the plugin at startup, making UNINSTALL ineffective.
Upgrading MySQL can mark formerly optional plugins as permanent, surprising administrators during cleanup.
Thrown when attempting to uninstall a plugin that is not currently active.
Occurs if MySQL cannot open the shared library for a plugin during install or start.
Appears when the expected entry point symbol is missing from the plugin library.
You can only prevent it from loading by editing my.cnf and restarting. Dynamic UNINSTALL will always fail.
No. The force_plus_permanent flag blocks all runtime unload attempts.
Query INFORMATION_SCHEMA.PLUGINS and check that PLUGIN_LOAD_OPTION equals FORCE_PLUS_PERMANENT.
Yes. Galaxy's AI copilot warns when you run UNINSTALL against a permanent plugin and suggests safe removal steps.