阿里雲RDS mysql報錯:Statement violates GTID consistency

近日有用戶反饋使用RDS mysql8.0時,在執行語句 create table … select時報錯了,主要錯誤是:Statement violates GTID consistency,字面理解是語句違反GTID一致性。
報錯截圖:Statement violates GTID consistency: CREATE TABLE ... SELECT

阿里雲RDS mysql報錯:Statement violates GTID consistency
解決辦法:將語句拆分爲 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錯誤的解決辦法和說明,如有不同看法請指教。

from:https://www.966866.net/technology/database/aliyun-rds-statement-violates-gtid-consistency.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章