1836: ER_READ_ONLY_MODE: Running in read-only mode(以只读模式运行)
MySQL含义
InnoDB 以只读模式运行(innodb_read_only=ON),或数据目录/介质为只读;对 InnoDB 表的写入和 DDL 被拒绝。注意:启用 read_only/super_read_only 时的写入尝试返回 1290(ER_OPTION_PREVENTS_STATEMENT),而不是此代码。
原因
服务器以 innodb_read_only=ON 启动(例如只读介质、共享数据目录、用于分析的副本);在此模式下无法对 InnoDB 表进行 INSERT/UPDATE/DELETE 和 CREATE/DROP/ALTER TABLE 等更改。
解决方法
如需写入,不带 innodb_read_only 启动服务器:从 my.cnf 中删除 innodb_read_only=ON 行并重启(此变量不是动态的,需要重启)。检查状态:SELECT @@innodb_read_only; 确认数据目录和文件系统可写。如果是在向副本/HA 从节点写入(1290),请将写入路由到主库。
同一数据库的其他条目
- 1969MariaDB: Query execution was interrupted (max_statement_time exceeded)(MariaDB:查询执行被中断(超出 max_statement_time))
- 1927MariaDB: ER_CONNECTION_KILLED: Connection was killed(连接已被终止)
- 1290ER_OPTION_PREVENTS_STATEMENT: running with the --read-only option(以 --read-only 选项运行)
- 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 列但未指定键长度)
- 1592ER_BINLOG_UNSAFE_STATEMENT: Unsafe statement written to the binary log(不安全的语句被写入二进制日志)