Common SQL Errors

MySQL Error 1780 ER_GTID_MODE_REQUIRES_BINLOG - Causes, Fixes, and Prevention

Galaxy Team
August 7, 2025

<p>MySQL raises this error when GTID_MODE is set to OFF_PERMISSIVE without binary logging and slave-update logging enabled.</p>

Sign up for the latest in common SQL errors from the Galaxy Team!
Welcome to the Galaxy, Guardian!
You'll be receiving a confirmation email

Follow us on twitter :)
Oops! Something went wrong while submitting the form.

What is MySQL error 1780?

<p>MySQL Error 1780 (ER_GTID_MODE_REQUIRES_BINLOG) occurs when you set GTID_MODE to OFF_PERMISSIVE but log-bin or log-slave-updates is disabled. Enable binary logging and slave updates, or switch GTID_MODE to OFF, to resolve the issue quickly.</p>

Error Highlights

Typical Error Message

@@GLOBAL.GTID_MODE = ON or ON_PERMISSIVE or

Error Type

Configuration Error

Language

MySQL

Symbol

ER_GTID_MODE_REQUIRES_BINLOG

Error Code

1780

SQL State

HY000

Explanation

Table of Contents

What is MySQL Error 1780 ER_GTID_MODE_REQUIRES_BINLOG?

MySQL raises error 1780 (SQLSTATE HY000) when you set @@GLOBAL.GTID_MODE to OFF_PERMISSIVE yet binary logging is disabled or --log-slave-updates is not enabled. The GTID subsystem relies on the binary log to store transaction identifiers, so even permissive modes depend on logging.

The server rejects the SET GLOBAL GTID_MODE statement, returns ER_GTID_MODE_REQUIRES_BINLOG, and keeps the previous mode. Replication or migration procedures halt until the logging prerequisites are satisfied or GTID tracking is disabled entirely.

What Causes This Error?

Attempting to enable GTID_MODE = OFF_PERMISSIVE on an instance with log-bin disabled is the most frequent cause. Without the binary log, GTIDs cannot be recorded or replayed, breaking consistency guarantees.

The error also appears on replicas that have log-bin enabled but omit log-slave-updates. Replicas must write applied transactions back to their own binary log so their GTID sets remain complete.

How to Fix MySQL Error 1780

Enable binary logging by adding log_bin and a unique server_id to my.cnf, then restart the server. For replicas, also add log_slave_updates. After the restart, retry setting GTID_MODE.

If you do not require GTID tracking, set GTID_MODE = OFF instead. This mode works without binary logging at the cost of losing GTID-based replication benefits.

Common Scenarios and Solutions

In local development environments, remove GTID_MODE changes or disable GTIDs to avoid unnecessary logging overhead and configuration complexity.

During staged GTID migrations, first deploy log-bin and log-slave-updates across all nodes. Only then raise GTID_MODE progressively: OFF → OFF_PERMISSIVE → ON_PERMISSIVE → ON.

Best Practices to Avoid This Error

Keep binary logging enabled wherever replication might be needed. Consistent configuration across the fleet prevents surprises when enabling GTIDs later.

Automate configuration management with tools like Galaxy, Ansible, or Chef to ensure log-bin and log-slave-updates stay synchronized across primary and replica instances.

Related Errors and Solutions

Error 1781 ER_GTID_NEXT_TYPE_UNDEFINED_FLAG occurs when GTID_NEXT is set to an invalid value. Reset GTID_NEXT to AUTOMATIC to clear the fault.

Error 1231 ER_VARIABLE_IS_READONLY appears if you attempt a dynamic GTID_MODE change on versions that require a restart. Restart the server with the desired setting to resolve.

Common Causes

Binary logging disabled

GTID_MODE relies on the binary log. When log-bin is OFF, MySQL cannot store GTID events, triggering the error.

log_slave_updates disabled

Replicas that do not re-log applied events break the global GTID set, so OFF_PERMISSIVE fails without this flag.

Incorrect migration sequence

Changing GTID_MODE before enabling required logging options causes ER_GTID_MODE_REQUIRES_BINLOG during GTID rollouts.

Related Errors

Error 1781 ER_GTID_NEXT_TYPE_UNDEFINED_FLAG

Appears when GTID_NEXT uses an invalid value. Reset GTID_NEXT to AUTOMATIC.

Error 1231 ER_VARIABLE_IS_READONLY

Occurs when GTID_MODE changes are attempted dynamically on versions that require a restart.

Error 1201 ER_SLAVE_THREAD

Indicates replication thread issues often seen after improper GTID migrations.

FAQs

Can I run GTID_MODE=OFF without log-bin?

Yes. GTID_MODE=OFF removes GTID tracking and does not require binary logging.

Is OFF_PERMISSIVE safe for production?

OFF_PERMISSIVE is a transitional mode. Keep it brief and move to ON_PERMISSIVE or ON once binary logging is stable.

Do I need log_slave_updates on a primary?

No. log_slave_updates is only needed on replicas so they record the GTIDs they apply.

How does Galaxy help avoid this error?

Galaxy highlights server variables, warns about GTID prerequisites, and lets teams share vetted migration scripts, reducing misconfiguration risks.

Start Querying with the Modern SQL Editor Today!
Welcome to the Galaxy, Guardian!
You'll be receiving a confirmation email

Follow us on twitter :)
Oops! Something went wrong while submitting the form.

Check out some other errors

Trusted by top engineers on high-velocity teams
Aryeo Logo
Assort Health
Curri
Rubie Logo
Bauhealth Logo
Truvideo Logo