Skip to content

ALC-3004: Confirmation required

Your Safety rules say this kind of statement must be confirmed before it runs. Alcuin stopped before running anything and asks you.

Usually you see a dialog rather than an error. Its title depends on what you were doing and where:

You were Title Button
Running a statement Run this anyway? Run it
Running a statement on production Run this on production? Run on production
Committing or applying staged changes Apply this? Apply
Committing or applying on production Apply this to production? Apply to production

The body says what the statements do and ends It cannot be undone from here. For example: On production, this drops, truncates or changes every row; changes structure. It cannot be undone from here. The statements that need confirming are listed below it.

A dialog titled Run this on production?, reading On production, this drops, truncates or changes every row; changes rows. It cannot be undone from here., the statement DELETE FROM orders, and Cancel and Run on production.

The question for a statement your rules ask about, on production.

The phrases come from the kinds of statement your rules ask about:

  • drops, truncates or changes every row
  • changes structure
  • drops data or objects for good
  • changes rows
  • runs code whose effect cannot be read from the text
  • could not be parsed, so what it does is unknown
  • is expected to return about 250,000 rows

On a connection that is still read-only, as production is when it opens, a statement run in a query tab shows the same reasons in the Run once dialog instead, after It also. A commit of staged rows, structure or a script asks Apply once first, then shows this question as a second dialog. See ALC-3001. Find value asks with its own dialog, Scan this much?, and Scan.

An agent connected over MCP is never asked. Its request is refused instead, with the same reason and Agents are never asked to confirm: run it in Alcuin. See ALC-4001.

Each environment has rules in Settings, under Safety:

  • Ask before: destructive statements: DROP, TRUNCATE, an UPDATE or DELETE with no WHERE, deleted rows and dropped structure.
  • Ask before: structure changes: CREATE, ALTER, COMMENT, GRANT and REVOKE.
  • Ask before: every write: any INSERT, UPDATE, DELETE, MERGE, COPY … FROM or edited row.
  • Ask before: code that cannot be read: a DO block, CALL or EXECUTE.
  • Ask before: scripts that cannot be parsed.
  • Ask before large results: a query with no LIMIT that the planner expects to return more rows than the number you set. Results and memory has the rest of the limits on large results.

Every environment starts by asking before destructive statements and scripts that cannot be parsed. Staging and Production also ask before code that cannot be read. Production also asks before structure changes and before results over 100,000 rows. Safety rules per environment has the full table.

  1. Read the statements in the dialog.
  2. If they are what you meant, confirm. Alcuin runs them as they are.
  3. If not, cancel. Nothing ran, and staged changes stay staged.

For a large result, adding a LIMIT avoids the question.

To change what Alcuin asks about, change the rules in Settings, under Safety. The questions apply from the next statement. Production’s rules can only be made stricter.

The engine reports this as ENGINE_CONFIRM_REQUIRED. Quote either name in an issue.