mysql錯(cuò)誤處理之ERROR 1786 (HY000)
ERROR 1786 (HY000)
【環(huán)境描述】
msyql5.6.14
【報(bào)錯(cuò)信息】
執(zhí)行create table ... select的時(shí)候遇到報(bào)錯(cuò):
db1 [test] [23:01:58]> create tablelgmnr_bak select * from lgmnr;
ERROR 1786 (HY000): CREATE TABLE ... SELECTis forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1
【報(bào)錯(cuò)原因】
ERROR1786是由于開(kāi)啟了enforce_gtid_consistency=true功能導(dǎo)致的,MySQL官方解釋說(shuō)當(dāng)啟用enforce_gtid_consistency功能的時(shí)候,MySQL只允許能夠保障事務(wù)安全,并且能夠被日志記錄的SQL語(yǔ)句被執(zhí)行,像create table ... select 和 create temporarytable語(yǔ)句,以及同時(shí)更新事務(wù)表和非事務(wù)表的SQL語(yǔ)句或事務(wù)都不允許執(zhí)行。
db1 [test] [23:28:28]> show variableslike 'ENFORCE_GTID_CONSISTENCY'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | enforce_gtid_consistency | ON | +--------------------------+-------+
【解決方法】
由于enforce_gtid_consistency參數(shù)是只讀的,所以必須重啟MySQL服務(wù)才能是配置生效。
嘗試在線動(dòng)態(tài)修改時(shí)的報(bào)錯(cuò):
db1 [test] [23:37:56]> set globalenforce_gtid_consistency=true;
ERROR 1238 (HY000): Variable'enforce_gtid_consistency' is a read only variable
下面是其他網(wǎng)友的補(bǔ)充
一般mysql5.7以前版本是支持create table XXX as select * from XXX; 這種創(chuàng)建表的語(yǔ)法,但是MySQL5.7.x版本里面gtid是開(kāi)啟的,會(huì)報(bào)錯(cuò)
ERROR 1786 (HY000):Statement violates GTID consistency: CREATE TABLE ... SELECT.
官方說(shuō)明: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.
解決辦法關(guān)閉GTID模式:
my.cnf里面修改參數(shù)為:
gtid_mode = OFF
enforce_gtid_consistency = OFF
重啟MySQL,再次創(chuàng)建成功:
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)
到此這篇關(guān)于mysql錯(cuò)誤處理之ERROR 1786 (HY000)的文章就介紹到這了,更多相關(guān)mysql錯(cuò)誤處理之ERROR 1786 (HY000)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL錯(cuò)誤ERROR 2002 (HY000): Can''t connect to local MySQL server through socket
- mysql error:#1062 Duplicate entry ‘***′ for key 1問(wèn)題解決方法
- MYSQL ERROR 1045 (28000): Access denied for user (using password: YES)問(wèn)題的解決
- mysql ERROR 1044 (42000): Access denied for user ''''@''localhost'' to database
- MySQLdb ImportError: libmysqlclient.so.18解決方法
- mysql登錄報(bào)錯(cuò)提示:ERROR 1045 (28000)的解決方法
- UCenter info: MySQL Query Error SQL:SELECT value FROM [Table]vars WHERE noteexists
- mysql不能啟動(dòng)報(bào)error2013錯(cuò)誤的多種解決方案
- winxp 安裝MYSQL 出現(xiàn)Error 1045 access denied 的解決方法
- mysql啟動(dòng)時(shí)出現(xiàn)ERROR 2003 (HY000)問(wèn)題的解決方法
相關(guān)文章
MySQL中因字段字符集不同導(dǎo)致索引不能命中的解決方法
這篇文章主要給大家介紹了關(guān)于MySQL中因字段字符集不同導(dǎo)致索引不能命中的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09
MySQL優(yōu)化配置文件my.ini(discuz論壇)
公司網(wǎng)站訪問(wèn)量越來(lái)越大,MySQL自然成為瓶頸,因此最近我一直在研究 MySQL 的優(yōu)化,第一步自然想到的是 MySQL 系統(tǒng)參數(shù)的優(yōu)化,作為一個(gè)訪問(wèn)量很大的網(wǎng)站(日20萬(wàn)人次以上)的數(shù)據(jù)庫(kù)系統(tǒng),不可能指望 MySQL 默認(rèn)的系統(tǒng)參數(shù)能夠讓 MySQL運(yùn)行得非常順暢。2011-03-03
MySQL?數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)
數(shù)據(jù)恢復(fù)的過(guò)程包括將備份文件導(dǎo)入到數(shù)據(jù)庫(kù)中、重建索引、應(yīng)用日志等,本文主要介紹了MySQL數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)的實(shí)現(xiàn),感興趣的可以了解一下2023-08-08
MySQL啟動(dòng)失敗之MySQL服務(wù)無(wú)法啟動(dòng)的原因及解決
這篇文章主要介紹了MySQL啟動(dòng)失敗之MySQL服務(wù)無(wú)法啟動(dòng)的原因及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
Keepalived+HAProxy實(shí)現(xiàn)MySQL高可用負(fù)載均衡的配置
這篇文章主要介紹了keepalived+haproxy實(shí)現(xiàn)MySQL高可用負(fù)載均衡的配置方法,通過(guò)這兩個(gè)軟件可以有效地使MySQL脫離故障及進(jìn)行健康檢測(cè),需要的朋友可以參考下2016-02-02
SQL中from_unixtime函數(shù)的使用方法實(shí)例
在MySQL數(shù)據(jù)表設(shè)計(jì)中,時(shí)間字段一般都設(shè)計(jì)為時(shí)間戳格式的,開(kāi)發(fā)人員去查看的時(shí)候就顯得有點(diǎn)不方便,可以使用FROM_UNIXTIME轉(zhuǎn)換成日期格式進(jìn)行查看,下面這篇文章主要給大家介紹了關(guān)于SQL中from_unixtime函數(shù)的使用方法的相關(guān)資料,需要的朋友可以參考下2022-08-08

