1290: ER_OPTION_PREVENTS_STATEMENT: running with the --read-only option(--read-only オプションで稼働中)
MySQL意味
MySQL サーバーが --read-only または --super-read-only オプションで稼働しているため、データ変更文 (INSERT/UPDATE/DELETE/DDL) を拒否した。read_only では CONNECTION_ADMIN/SUPER を持つユーザーは書き込み可能だが、super_read_only が有効な場合はそれも不可となり、メッセージは '--super-read-only option' となる。
原因
read_only=ON または super_read_only=ON。最も多いのはレプリカへの誤った書き込み試行。レプリカと Group Replication のセカンダリはデータ整合性のため読み取り専用に保たれ、フェイルオーバー自動化は旧プライマリを super_read_only にする。フェイルオーバー/スイッチオーバー中に誤ったノードへ書き込んだ場合にも発生する。
対処方法
書き込みをプライマリ (ソース) サーバーに振り向ける。このサーバーを本当に新しいプライマリにする場合: SET GLOBAL read_only = OFF; (read_only をオフにすると super_read_only も自動的にオフになり、super_read_only をオンにすると read_only もオンになる)。HA ツール (Orchestrator/Group Replication/InnoDB Cluster) が管理するノードでは手動で変更しない。状態の確認: SELECT @@read_only, @@super_read_only;
同じデータベースの他の項目
- 1153Got a packet bigger than 'max_allowed_packet' bytes(max_allowed_packet より大きいパケットを受信)
- 1969MariaDB: Query execution was interrupted (max_statement_time exceeded)(クエリの実行が中断された)
- 1927MariaDB: ER_CONNECTION_KILLED: Connection was killed(接続が強制終了された)
- 1836ER_READ_ONLY_MODE: Running in read-only mode(読み取り専用モードで稼働中)
- 3819ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated(CHECK 制約違反)
- 1118ER_TOO_BIG_ROWSIZE: Row size too large(行サイズが大きすぎる)
- 1170ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length(キー長を指定せずに BLOB/TEXT 列をキーに使用)