-
以下描述只读语句
-
如果语句以以下内容开头,则为只读语句
-
如果它们以以上任何一项开头,并且不包含必须在读写服务器上执行的函数或关键字。比如
GET_LOCK()
FOR UPDATE|SHARE
LOCK IN SHARE MODE
-
某些函数可能会在只读语句中产生写入操作。此类语句会失败并显示类似于以下内容的错误
The MySQL server is running with the --super-read-only option so it cannot execute this statement.
可以使用
ROUTER SET
或query_attributes
将此类语句显式路由到读写服务器。请参阅每个会话的配置。您也可以将语句包装在START TRANSACTION ... COMMIT
中。
-
-
以下描述读写语句
以下 DML:
CALL
、INSERT
、UPDATE
、DELETE
、REPLACE
、IMPORT TABLE
、LOAD DATA
、LOAD XML
、WITH...UPDATE/DELETE
。以下帐户管理语句:
GRANT
、REVOKE
、RENAME USER
、CREATE ROLE
、CREATE USER
、DROP ROLE
、DROP USER
、SET PASSWORD
、SET ROLE
、SET DEFAULT ROLE
。以下事务和锁定语句:
BEGIN
、START TRANSACTION
、XA
、SAVEPOINT
、ROLLBACK
、COMMIT
。以下数据库管理语句:
SHOW CREATE...
、SHOW VARIABLES
、SHOW STATUS
、SET TRANSACTION
(包括SET SESSION ...
)、SET NAMES
、SET CHARACTER SET
、FLUSH PRIVILEGES
。以下表维护语句:
ANALYZE TABLE
、OPTIMIZE TABLE
、CHECK TABLE
、REPAIR TABLE
。
-
如果
access_mode=auto
,则不支持以下语句任何不是只读或读写的语句。这包括ALTER RESOURCE GROUP 语句、复制语句和其他管理语句。