zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    Linux下使用select延时
    update不能直接使用select的返回结果
    C++类模板声明与定义为何不能分开
    MySQL开启日志记录执行过的SQL语句
    如何使用FastCGI处理自定义HTTP头
    MongoDB添加认证
    Ubuntu16.04安装MongoDB
    nginx: [emerg] getpwnam(“www”) failed
    C++ 智能指针(一)
    协同过滤
  • 原文地址:https://www.cnblogs.com/Qing-840/p/9913610.html
Copyright © 2011-2022 走看看