• MySQL错误ERROR 1786 (HY000)解决


    务上需要支持create table XXX as select * from XXX; 这种创建表的语法,但是MySQL5.7.x版本里面gtid是开启的,会报错

    ERROR 1786 (HY000):Statement violates GTID consistency: CREATE TABLE ... SELECT.

    官方说明:https://dev.mysql.com/doc/refman/5.7/en/replication-gtids-restrictions.html

    CREATE TABLE ... SELECT statements.  CREATE TABLE ... SELECT is not safe for statement-based replication. When using row-based replication, this statement is actually logged as two separate events—one for the creation of the table, and another for the insertion of rows from the source table into the new table just created. When this statement is executed within a transaction, it is possible in some cases for these two events to receive the same transaction identifier, which means that the transaction containing the inserts is skipped by the slave. Therefore, CREATE TABLE ... SELECT is not supported when using GTID-based replication.

    解决办法关闭GTID模式:
    my.cnf里面修改参数为:

    gtid_mode = OFF
    enforce_gtid_consistency = OFF

    重启MySQL,再次创建成功:

    mysql> show variables like '%gtid_mode%';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | gtid_mode     | OFF   |
    +---------------+-------+
    1 row in set (0.01 sec)
    
    mysql> show variables like '%enforce_gtid_consistency%';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | enforce_gtid_consistency | OFF   |
    +--------------------------+-------+
    1 row in set (0.01 sec)
    
    mysql> create table t1 as select * from BS_CONT;
    Query OK, 0 rows affected (0.12 sec)
  • 相关阅读:
    Shell printf 命令
    Shell echo命令
    Shell 基本运算符
    Shell 数组
    Shell 传递参数
    Shell 变量
    Spark基础知识汇总
    DataScientist————汇总篇
    Java的Unsafe类
    java 中文字符和unicode编码值相互转化
  • 原文地址:https://www.cnblogs.com/Qing-840/p/9913610.html
Copyright © 2020-2023  润新知