У меня есть структура, которая использует SQLalchemy для подключения к базам данных SQL. Я пытаюсь заставить его работать с CockroachDB, даже если официальная поддержка ограничена MySQL, Postgres или Oracle.
Операции, которые я выполняю, безупречно работают с поддерживаемыми базами данных SQL. Использование 3-узлового кластера CockroachDB не так уж и тривиально.
Проблема возникает со следующей операцией SQL:
CREATE TABLE dids (
scope VARCHAR(25) NOT NULL,
name VARCHAR(250) NOT NULL,
account VARCHAR(25),
did_type VARCHAR(1),
is_open BOOLEAN,
monotonic BOOLEAN DEFAULT '0',
hidden BOOLEAN DEFAULT '0',
obsolete BOOLEAN DEFAULT '0',
complete BOOLEAN,
is_new BOOLEAN DEFAULT '1',
availability VARCHAR(1),
suppressed BOOLEAN DEFAULT '0',
bytes BIGINT,
length BIGINT,
md5 VARCHAR(32),
adler32 VARCHAR(8),
expired_at TIMESTAMP WITHOUT TIME ZONE,
purge_replicas BOOLEAN DEFAULT '1',
deleted_at TIMESTAMP WITHOUT TIME ZONE,
events BIGINT,
guid CHAR(32),
project VARCHAR(50),
datatype VARCHAR(50),
run_number INTEGER,
stream_name VARCHAR(70),
prod_step VARCHAR(50),
version VARCHAR(50),
campaign VARCHAR(50),
task_id INTEGER,
panda_id INTEGER,
lumiblocknr INTEGER,
provenance VARCHAR(2),
phys_group VARCHAR(25),
transient BOOLEAN DEFAULT '0',
accessed_at TIMESTAMP WITHOUT TIME ZONE,
closed_at TIMESTAMP WITHOUT TIME ZONE,
eol_at TIMESTAMP WITHOUT TIME ZONE,
is_archive BOOLEAN,
constituent BOOLEAN,
access_cnt INTEGER,
updated_at TIMESTAMP WITHOUT TIME ZONE,
created_at TIMESTAMP WITHOUT TIME ZONE,
CONSTRAINT "DIDS_PK" PRIMARY KEY (scope, name),
CONSTRAINT "DIDS_ACCOUNT_FK" FOREIGN KEY(account) REFERENCES accounts (account) ON DELETE CASCADE,
CONSTRAINT "DIDS_SCOPE_FK" FOREIGN KEY(scope) REFERENCES scopes (scope),
CONSTRAINT "DIDS_MONOTONIC_NN" CHECK (MONOTONIC IS NOT NULL),
CONSTRAINT "DIDS_OBSOLETE_NN" CHECK (OBSOLETE IS NOT NULL),
CONSTRAINT "DIDS_SUPP_NN" CHECK (SUPPRESSED IS NOT NULL),
CONSTRAINT "DIDS_ACCOUNT_NN" CHECK (ACCOUNT IS NOT NULL),
CONSTRAINT "DIDS_PURGE_REPLICAS_NN" CHECK (PURGE_REPLICAS IS NOT NULL),
CONSTRAINT "DIDS_CREATED_NN" CHECK (CREATED_AT IS NOT NULL),
CONSTRAINT "DIDS_UPDATED_NN" CHECK (UPDATED_AT IS NOT NULL),
CONSTRAINT "DIDS_TYPE_CHK" CHECK (did_type IN ('A', 'C', 'D', 'F', 'Y', 'X', 'Z')),
CONSTRAINT "DIDS_AVAILABILITY_CHK" CHECK (availability IN ('A', 'D', 'L'))
)
И заканчивается следующей ошибкой:
invalid syntax: statement ignored: unimplemented at or near "cascade"
DETAIL: source SQL:
CREATE TABLE dids (
scope VARCHAR(25) NOT NULL,
name VARCHAR(250) NOT NULL,
account VARCHAR(25),
did_type VARCHAR(1),
is_open BOOLEAN,
monotonic BOOLEAN DEFAULT '0',
hidden BOOLEAN DEFAULT '0',
obsolete BOOLEAN DEFAULT '0',
complete BOOLEAN,
is_new BOOLEAN DEFAULT '1',
availability VARCHAR(1),
suppressed BOOLEAN DEFAULT '0',
bytes BIGINT,
length BIGINT,
md5 VARCHAR(32),
adler32 VARCHAR(8),
expired_at TIMESTAMP WITHOUT TIME ZONE,
purge_replicas BOOLEAN DEFAULT '1',
deleted_at TIMESTAMP WITHOUT TIME ZONE,
events BIGINT,
guid CHAR(32),
project VARCHAR(50),
datatype VARCHAR(50),
run_number INTEGER,
stream_name VARCHAR(70),
prod_step VARCHAR(50),
version VARCHAR(50),
campaign VARCHAR(50),
task_id INTEGER,
panda_id INTEGER,
lumiblocknr INTEGER,
provenance VARCHAR(2),
phys_group VARCHAR(25),
transient BOOLEAN DEFAULT '0',
accessed_at TIMESTAMP WITHOUT TIME ZONE,
closed_at TIMESTAMP WITHOUT TIME ZONE,
eol_at TIMESTAMP WITHOUT TIME ZONE,
is_archive BOOLEAN,
constituent BOOLEAN,
access_cnt INTEGER,
updated_at TIMESTAMP WITHOUT TIME ZONE,
created_at TIMESTAMP WITHOUT TIME ZONE,
CONSTRAINT "DIDS_PK" PRIMARY KEY (scope, name),
CONSTRAINT "DIDS_ACCOUNT_FK" FOREIGN KEY(account) REFERENCES accounts (account) ON DELETE CASCADE,
Я хотел бы понять проблему, с которой я столкнулся. Спасибо