zoukankan      html  css  js  c++  java
  • Mysql Statement violates GTID consistency: CREATE TABLE ... SELECT.

    1.背景

    今天在开发环境验证好的备份sql脚本,就是用create table tnm as select * from tnm1(含结构和数据)。到了测试那里就报了错误:Mysql Statement violates GTID consistency: CREATE TABLE ... SELECT.

    2.原因分析

    查看了使用的数据库版本都是5.6以上,结合官方文档给出的解释:

    MySQL5.6及以上的版本,开启了 enforce_gtid_consistency=true 功能导致的,MySQL官方解释说当启用 enforce_gtid_consistency 功能的时候,MySQL只允许能够保障事务安全,并且能够被日志记录的SQL语句被执行,像create table … select 和 create temporarytable语句,以及同时更新事务表和非事务表的SQL语句或事务都不允许执行。

    对比了开发和测试库的参数,发现测试库的参数为on,开发的为off。

    3.解决方法

    3.1 在有超级用户权限的情况下将参数值改为off

    在命令窗口或者配置文件my.cnf

    SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = off;

    3.2将原来的sql拆成两部分,先复制结构,再插入数据

    create table a like b;

    insert into a select * from b;

  • 相关阅读:
    方法参数个数最多不宜超过4个
    避免方法中使用大量局部变量
    JQuery学习备忘
    CSS学习备忘
    解析Path方法备忘
    获取差集合的一种实现思路
    前台JSP页面独立化
    requireJs的使用
    handlebar
    移动端h5<a>标签点击样式去除
  • 原文地址:https://www.cnblogs.com/guipeng/p/14607251.html
Copyright © 2011-2022 走看看