qishibo/AnotherRedisDesktopManager · error
e.message
Error message
e.message
What it means
FLUSHDB confirmation flow in ConnectionMenu.vue: after the user confirms, client.flushdb() rejection surfaces the raw e.message. FLUSHDB is in the app's writeCMD table, so on a readonly connection the client-side guard rejects before the server is contacted; other causes are ACL denial (NOPERM for @dangerous/@write), managed Redis blocking FLUSHDB, or a dropped connection.
Source
Thrown at src/components/ConnectionMenu.vue:390
const preDB = this.client.condition ? this.client.condition.select : 0;
const inputTxt = 'y';
const placeholder = this.$t('message.flushdb_prompt', { txt: inputTxt });
this.$prompt(this.$t('message.confirm_flush_db', { db: preDB }), {
inputValidator: value => ((value == inputTxt) ? true : placeholder),
inputPlaceholder: placeholder,
})
.then((value) => {
this.client.flushdb().then((reply) => {
if (reply == 'OK') {
this.$message.success({
message: this.$t('message.delete_success'),
duration: 1000,
});
this.refreshConnection();
}
}).catch((e) => { this.$message.error(e.message); });
})
.catch((e) => {});
},
changeColor(color) {
this.$emit('changeColor', color);
},
},
};
</script>
<style type="text/css">
.connection-menu-title {
margin-left: -20px;
}
.connection-menu .connection-name {
margin-right: 115px;
padding-right: 6px;View on GitHub (pinned to c149855106)
Solutions
- If the message is the readonly-mode text, disable Readonly in the connection config and reconnect (intentionally dangerous).
- If the message is 'NOPERM', grant the ACL user @dangerous (or +flushdb) or use an admin account.
- On managed Redis that blocks FLUSHDB entirely, delete keys via scan + UNLINK or use the provider's console.
Defensive patterns
Strategy: validation
Validate before calling
import { writeCMD } from '@/commands.js';
// readonly guard + confirm before FLUSHDB
if (client.options.connectionReadOnly && writeCMD['FLUSHDB']) {
throw new Error('Connection is readonly - FLUSHDB is blocked client-side');
} Type guard
const isPermissionError = (e) => /NOPERM|readonly mode|not allowed/i.test(e.message);
Try / catch
this.client.flushdb().then(/* success */).catch((e) => {
if (isPermissionError(e)) {
this.$message.error('FLUSHDB not permitted on this connection/server - check readonly setting and ACL');
} else {
this.$message.error(e.message);
}
}); Prevention
- Gate the Flush DB menu item on !client.options.connectionReadOnly.
- For managed Redis, verify FLUSHDB support before offering the action.
- Require the confirmation prompt value (the app already does) - it is the last line of defense.
When it happens
Trigger: Connection readonly guard (FLUSHDB is intercepted in sendCommand); ACL user without @dangerous/@write; managed services (ElastiCache, Upstash, etc.) that disable FLUSHDB; connection lost between confirm and execution.
Common situations: Attempting to flush a production DB from a readonly-configured connection; restricted ACL accounts; managed instances with command blacklists.
Related errors
AI-assisted analysis of qishibo/AnotherRedisDesktopManager@c149855106 (2026-08-22).
Data as JSON: /api/errors/d5a72573c65acb13.
Report an issue: GitHub.