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

  1. If the message is the readonly-mode text, disable Readonly in the connection config and reconnect (intentionally dangerous).
  2. If the message is 'NOPERM', grant the ACL user @dangerous (or +flushdb) or use an admin account.
  3. 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

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.