天天看點

阿裡雲RDS mysql報錯:Statement violates GTID consistency: CREATE TABLE … SELECT

使用者回報使用RDS mysql8.0時,在執行語句 create table … select時報錯了,主要錯誤是:Statement violates GTID consistency,字面了解是語句違反GTID一緻性。

阿裡雲RDS mysql報錯:Statement violates GTID consistency: CREATE TABLE … SELECT

解決辦法:将語句拆分為 create table a like b;insert into a select * from b; 或者是create table a(具體字段…);insert into a select … from b…的形式。實際是拆分為兩句,先根據複制表結構或指定字段來建立表,然後使用 insert into select的方式來插入資料。

問題分析:從錯誤本身了解是GTID相關的問題,查了查資料,有解決辦法是:配置enforce_gtid_consistency = off 來關閉,但RDS控制台參數配置裡沒有這個參數項,然後了解了一下,RDS主從應該會基于GTID,應該是這個原因,是以是不允許調整這個參數的。是以隻能建議修改語句來實作了。

知識延伸:

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錯誤的解決辦法和說明,如有不同看法請指教。

繼續閱讀