近日有用戶反饋使用RDS mysql8.0時,在執行語句 create table … select時報錯了,主要錯誤是:Statement violates GTID consistency,字面理解是語句違反GTID一致性。
報錯截圖:Statement violates GTID consistency: CREATE TABLE ... SELECThtml
解決辦法:將語句拆分爲 create table a like b;insert into a select * from b; 或者是create table a(具體字段…);insert into a select … from b…的形式。實際是拆分爲兩句,先根據複製表結構或指定字段來新建表,而後使用 insert into select的方式來插入數據。mysql
問題分析:從錯誤自己理解是GTID相關的問題,查了查資料,有解決辦法是:配置enforce_gtid_consistency = off 來關閉,但RDS控制檯參數配置裏沒有這個參數項,而後瞭解了一下,RDS主從應該會基於GTID,應該是這個緣由,因此是不容許調整這個參數的。所以只能建議個性語句來實現了。sql
知識延伸:
mysql複製表或根據查詢結果來生成表能夠使用CREATE TABLE a SELECT….,insert into a select ….。
前者是表a不存在, 會根據select字段來新建表,後者須要a存在且select 字段的數量和類型要跟表結構一致。因爲create table 支持like來複製表結果,能夠變形爲create table a like b;insert into a select * from b的形式來完成。微信
以上就是我所掌握的關於阿里雲RDS mysql的Statement violates GTID consistency錯誤的解決辦法和說明,若有不一樣見解請指教。ide
更多相關知識可關注微信公衆號:上雲指導阿里雲
from:https://www.966866.net/technology/database/aliyun-rds-statement-violates-gtid-consistency.html.net