MySQL Error number: MY-013100; Symbol: ER_RPL_GTID_UNSAFE_STMT_ON_TEMPORARY_TABLE; SQLSTATE: HY000 报错 故障修复 远程处理
文档解释
Error number: MY-013100; Symbol: ER_RPL_GTID_UNSAFE_STMT_ON_TEMPORARY_TABLE; SQLSTATE: HY000
Message: Statement violates GTID consistency: CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE can only be executed outside transactional context. These statements are also not allowed in a function or trigger because functions and triggers are also considered to be multi-statement transactions.
错误说明
MY-013100,ER_RPL_GTID_UNSAFE_STMT_ON_TEMPORARY_TABLE 错误是MySQL在执行过程中报出的,这个错误主要指的是MySQL在处理带有GTID的MySQL复制时,会报出的一个错误。表明在复制的主服务器和备份服务器之间在不安全的语句操作临时表,这是非常不安全的。
SQLSTATE码是 HY000,这是MySQL的最高级判定错误。在MySQL 5.7以上,会在执行不安全语句操作临时表时报出此错误, MyISAM临时表,和其他表类型将会以普通模式进行操作,这样会导致GTID复制不安全,产生此错误。
常见案例
当用户在执行delete或者update等语句操作临时表时,就会出现此错误。以其它mysql引擎临时表为例,比如说MyISAM类型的临时表,更新语句update语句会导致复制变为不安全,此时gtid会报出此错误。
解决方法
1. 首先确定错误报出的原因是因为不安全语句操作临时表,所以应该避免在临时表上执行不安全的更新或删除操作。比如说可以把不安全的更新操作改成从临时表中查询,然后存储在临时变量中,再进行更新操作。
2. 由于复制的不安全是由于MyISAM类型的临时表导致的,因此可以把MyISAM类型的临时表改成其他的类型,如InnoDB,其它内存类型的表,比如MEMORY,Federated等类型的表。这样也可以解决复制不安全的问题。
3. 如果想要把复制变为安全,可以使用函数SKIP_GTID()函数,该函数应用于复制会话,可以让用户对复制进行控制,如果在该复制会话中不想使用GTID,可以用这个函数作为复制的转换。
总结,MY-013100 ER_RPL_GTID_UNSAFE_STMT_ON_TEMPORARY_TABLE是MySQL在执行带GTID复制时出现的错误,该错误主要是由于用户在复制的主服务器和备份服务器之间在不安全的语句操作临时表,应通过避免不安全的操作语句和临时表类型,使用SKIP_GTID函数来解决复制不安全问题。
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 MySQL Error number: MY-013100; Symbol: ER_RPL_GTID_UNSAFE_STMT_ON_TEMPORARY_TABLE; SQLSTATE: HY000 报错 故障修复 远程处理
相关文章
- MySQL Error number: MY-010912; Symbol: ER_RPL_GTID_MODE_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011654; Symbol: ER_GRP_RPL_APPLIER_TERMINATION_TIMED_OUT_ON_SHUTDOWN; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011661; Symbol: ER_GRP_RPL_FAILED_TO_STOP_ON_PLUGIN_UNINSTALL; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-013309; Symbol: ER_GRP_RPL_TRX_DOES_NOT_EXIST_ON_TCM_ON_HANDLE_REMOTE_PREPARE; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-013690; Symbol: ER_SLAVE_ANONYMOUS_TO_GTID_IS_LOCAL_OR_UUID_AND_GTID_MODE_NOT_ON; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-013865; Symbol: ER_IB_MSG_LOG_WRITER_WAIT_ON_NEW_LOG_FILE; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-013878; Symbol: ER_IB_MSG_LOG_FILES_RESIZE_ON_START_FAILED__UNEXPECTED; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-013934; Symbol: ER_IB_MSG_LOG_WRITER_WAIT_ON_CONSUMER; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL 事务:预防幻读的终极武器(mysql事务幻读)
- 使用DOS连接MySQL数据库(dos连接mysql)
- 如何快速连接远程MySQL数据库(连接远程mysql)
- MySQL无法关闭故障排查(mysql关闭不了了)
- MySQL:优越的数据库解决方案(mysql的优点)
- MySQL连接查询:活学活用ON条件(mysql连接查询on)
- 优化极致性能:MySQL 并发优化实践(mysql并发性)
- MySQL中的数据导入与导出(mysql数据in)
- 如何修复MySQL主从复制的故障(mysql 主从修复)
- MySQL字段类型及长度指南(mysql类型长度)
- MySQL中ID字段类型详解(mysql中ID字段类型)
- C语言MySQL操作,入门到精通(c mysql最后一行)
- MySQL实现两表求余额简单又实用(mysql 两表求余额)
- 学习MySQL如何利用两表关联进行排序(mysql两表关联并排序)
- MySQL删除外键的命令(mysql中删除外键命令)
- MySQL多字段聚合(mysql 不同字段汇总)
- MySQL故障困扰,无法连接解决方案来了(mysql下不来)
- 技术分享解决MySQL无法写入空值问题(mysql不能写进空值)
- MYSQL离线使用方法大揭秘不联网也能愉快地使用MySQL(mysql 不联网吗)