问题描述
我正在尝试通过Google Cloud Platform上的CLOUD sql使用预聚合,但是数据库拒绝访问并给出错误语句违反了GTID一致性。 任何帮助表示赞赏。
解决方法
Cube.js由CREATE TABLE ... SELECT
完成了预聚合,但是您在带有--enforce-gtid-consistency
的Google SQL上使用MySQL(有限制)。
由于只能记录交易安全的语句,因此使用CREATE TABLE ... SELECT
(以及其他一些SQL)存在局限性,因为该语句实际上被记录为两个单独的事件。
有两种方法可以解决此问题:
1。使用预聚合到外部数据库。 (推荐方式)。
https://cube.dev/docs/pre-aggregations/#read-only-data-source-pre-aggregations
2。使用未记录的标志loadPreAggregationWithoutMetaLock
注意:此标志是实验性的,可以在功能中删除或更改。。
Take a look at the source code
您可以直接在驱动程序构造函数中传递它。这将产生两个SQL语句以通过限制:
-
CREATE TABLE
-
INSERT INTO
谢谢