mysql Statement violates GTID consistency 的坑

今天项目迁移,重新换了一个数据库版本,然后问题来了,原本运行正常的程序迁移过来之后就是不能正常运行,后台报错如下:

update tbl_user_info set -- 强制下架 mv_count = mv_count-1, update_time=now() where user_id = ?; update tbl_user_info a,tbl_mv_like b set a.enjoy_num = a.enjoy_num -1, a.update_time = now() where b.mvlikeId = ? and b.userId =a.user_id and b.userId != ? and b.isLIke = 1 and b.state = 0
### Cause: java.sql.SQLException: Statement violates GTID consistency: Updates to non-transactional tables can only be done in either autocommitted statements or single-statement transactions, and never in the same statement as updates to transactional tables.
; uncategorized SQLException for SQL []; SQL state [HY000]; error code [1785]; Statement violates GTID consistency: Updates to non-transactional tables can only be done in either autocommitted statements or single-statement transactions, and never in the same statement as updates to transactional tables.; nested exception is java.sql.SQLException: Statement violates GTID consistency: Updates to non-transactional tables can only be done in either autocommitted statements or single-statement transactions, and never in the same statement as updates to transactional tables.

网上查了一下 Statement violates GTID consistency这个,然后看到这个网页https://dev.mysql.com/doc/refman/5.6/en/replication-options-gtids.html,一开始还以为是数据库模式的问题,后面看了下数据库表,才知道原来是运维人员在新的数据库上把我的数据库表的模式设置成了MyISAM这个模式,然后去数据库show engines了一下,

可以看到,这个模式是不支持事物的,将它修改为InnoDB,问题搞定

时间: 2024-07-29 00:39:15

mysql Statement violates GTID consistency 的坑的相关文章

Error Code: 1786 Statement violates GTID consistency: CREATE TABLE ... SELECT.

1.错误描述 1 queries executed, 0 success, 1 errors, 0 warnings 查询:call account_check_main('20180511') 错误代码: 1786 Statement violates GTID consistency: CREATE TABLE ... SELECT. 执行耗时 : 0 sec 传送时间 : 0 sec 总耗时 : 0.066 sec 2.错误原因 这是因为在5.6及以上的版本内,开启了 enforce_gt

[MySQL 5.6] GTID实现、运维变化及存在的bug

[MySQL 5.6] GTID实现.运维变化及存在的bug http://www.tuicool.com/articles/NjqQju 由于之前没太多深入关注gtid,这里给自己补补课,本文是我看文档和代码的整理记录. 本文的主要目的是记下跟gtid相关的backtrace,用于以后的问题排查.另外也会讨论目前在MySQL5.6.11版本中存在的bug. 前言:什么是GTID 什么是GTID呢, 简而言之,就是全局事务ID(global transaction identifier ),最初

Repair MySQL 5.6 GTID replication by injecting empty transactions

在前面文章我提到了两种关于如何修复 Mysql 5.6 GTID 主从数据库.我没有提到大家说熟知的方法 - ` GLOBAL SQL_SLAVE_SKIP_COUNTER = n`.原因很简单,如果你使用的是MysqlGTID,它是不工作的.那么问题来了: 有没有简单的方法跳过这单一事务 ?是的!注入空事务.让我们想象一下,从服务器上的复制不工作,因为下面一个错误: Last_SQL_Error: Error 'Duplicate entry '4' for key 'PRIMARY'' on

MySQL 5.6 GTID+MHA

MySQL+GTID_MHA MHA介绍 MHA(MasterHigh Availability Manager and Tools for MySQL),是日本的一位MySQL专家采用Perl语言编写的一个脚本管理工具,该工具仅适用于MySQLReplication(二层)环境,目的在于维持Master主库的高可用性.它是基于标准的MySQL复制(异步/半同步): MHA有两部分组成:MHAManager(管理节点)和MHA Node(数据节点); MHA Manager可以单独部署在一台独立

MySQL JDBC的queryTimeout的一个坑

遇到一个MySQL JDBC的queryTimeout的坑,比较恶心,算是它的BUG,也可以不算,^_^,为啥这么说?看一下下面的解释: 现象: 用同一个Connection执行大批量SQL的时候,导致了OOM现象. 细节现象描述: 1.SQL是从某个存储设备上拿到的,不会直接占用大量的内存,每次只会取最多1千条数据过去,也会判定容量不超过多少M. 2.每一批SQL执行会单独创建Statement对象,执行一批SQL后,会将这个Statement关闭掉. 3.SQL语句中只有insert,没有其

(5.8)mysql高可用系列——MySQL中的GTID复制(实践篇)

目录: [0]概念 一.基于GTID的异步复制(一主一从)无数据/少数据搭建 [1]环境 [2]安装 mysql utilities(本文借助该工具进行安装) [3]开始配置 #[3.1]在主库上 准备复制账户 #[3.2]参数配置(主从都配)#[3.3]重启两台mysql#[3.4]主库上查看binlog#[3.5.1]使用mysqlreplicate(mysql utilities工具)命令配置#[3.5.2]使用传统方式配置#[3.6]主从数据测试(在主库上跑) [4]我的其他文章 [4.

windows中使用mysql配置my.ini时的坑

windows中安装mysql的一般步骤: mysql版本:5.7.16 1.解压 2.把解压的文件夹bin目录地址添加到环境变量PATH里面 3.在文件加中添加配置文件my.ini--配置内容后面说,坑的所在 3.cmd(管理员模式)cd到bin目录里,执行命令 mysqld -install mysql --default-file= my.ini的物理路径 (这句命令是添加mysql服务,并把my.ini设为配置文件) 4.第3步成功后,继续执行命令 mysqld --initialize

mysql之 MySQL 主从基于 GTID 复制原理概述

一. 什么是GTID ( Global transaction identifiers ):MySQL-5.6.2开始支持,MySQL-5.6.10后完善,GTID 分成两部分,一部分是服务的UUid,UUID保存在mysql数据目录的auto.cnf文件中,这是一个非常重要的文件,不能删除,这一部分是不会变的.另外一部分就是事务ID了,随着事务的增加,值一次递增,如下图+---------------+----------+--------------+------------------+-

【MySql】——MHA+GTID+failover+binlog-server+Atlas

一.环境准备 1.mysql-db01 1 #系统版本 2 [[email protected] ~]# cat /etc/redhat-release 3 CentOS release 6.7 (Final) 4 #内核版本 5 [[email protected] ~]# uname -r 6 2.6.32-573.el6.x86_64 7 #IP地址 8 [[email protected] ~]# hostname -I 9 10.0.0.51 2.mysql-db02 1 #系统版本