The MySQL server is running with the –read-only option so it cannot execute this statement

简介

  • 这个错误信息意味着MySQL服务器正在读取模式(read-only mode),因此无法执行此语句。
  • 读取模式是MySQL服务器的一种模式,它可以防止数据被意外地修改,因此,当服务器处于读取模式时,所有的写操作都被禁用。

解决方式

查看MySQL服务器的当前状态

  • 要查看MySQL服务器的当前状态,可以使用以下命令:
SHOW GLOBAL VARIABLES LIKE 'READ_ONLY';
  • 如果READ_ONLY变量的值为ON,则表示MySQL服务器正在读取模式下运行。如果它的值是OFF,则表示它不是。

关闭读取模式

  • 如果MySQL服务器处于读取模式下,并且你想要执行写操作,你需要关闭读取模式。你可以通过以下命令来关闭读取模式:
SET GLOBAL read_only = 0;
  • 这将关闭读取模式并允许进行写操作。

使用root账户登录

  • 如果你无法使用USER账户执行更新操作并且服务器正在读取模式下,那么你可以尝试使用root账户登录MySQL服务器。
mysql -u root -p
  • 进入mysql后,输入以下命令更改读取模式状态:
SET GLOBAL read_only = OFF;
  • 在确定没有其他用户连接MySQL数据库的情况下,在此期间进行必要的更新操作。
  • 示例1:
mysql> SET GLOBAL read_only = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO test(name, score) VALUES('John', 90);
ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement
  • 在这个例子中,我们尝试向表test中插入一行,但我们得到了一个错误,因为MySQL服务器处于读取模式。
  • 示例2:
mysql> SELECT @@global.read_only;
+----------------+
| @@global.read_only |
+----------------+
| 1              |
+----------------+
1 row in set (0.00 sec)

mysql> SET GLOBAL read_only = 0;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@global.read_only;
+----------------+
| @@global.read_only |
+----------------+
| 0              |
+----------------+
1 row in set (0.00 sec)
  • 在这个例子中,我们查看了MySQL服务器的读取模式状态,并将其从1更改为0,从而关闭了读取模式。