Skip to content

erase: INCORRECT_ELEMENT_OF_SET #53

@lufi78

Description

@lufi78

Traceback (most recent call last):
File "/home/username/mysql_ch_replicator/mysql_ch_replicator/main.py", line 6, in
main()
File "/home/username/mysql_ch_replicator/mysql_ch_replicator/mysql_ch_replicator/main.py", line 152, in main
run_db_replicator(args, config)
File "/home/username/mysql_ch_replicator/mysql_ch_replicator/mysql_ch_replicator/main.py", line 98, in run_db_replicator
db_replicator.run()
File "/home/username/mysql_ch_replicator/mysql_ch_replicator/mysql_ch_replicator/db_replicator.py", line 178, in run
self.run_realtime_replication()
File "/home/username/mysql_ch_replicator/mysql_ch_replicator/mysql_ch_replicator/db_replicator.py", line 379, in run_realtime_replication
self.handle_event(event)
File "/home/username/mysql_ch_replicator/mysql_ch_replicator/mysql_ch_replicator/db_replicator.py", line 407, in handle_event
self.upload_records_if_required(table_name=event.table_name)
File "/home/username/mysql_ch_replicator/mysql_ch_replicator/mysql_ch_replicator/db_replicator.py", line 547, in upload_records_if_required
self.upload_records()
File "/home/username/mysql_ch_replicator/mysql_ch_replicator/mysql_ch_replicator/db_replicator.py", line 571, in upload_records
self.clickhouse_api.erase(
File "/home/username/mysql_ch_replicator/mysql_ch_replicator/mysql_ch_replicator/clickhouse_api.py", line 184, in erase
self.execute_command(query)
File "/home/username/mysql_ch_replicator/mysql_ch_replicator/mysql_ch_replicator/clickhouse_api.py", line 67, in execute_command
self.client.command(query)
File "/home/username/mysql_ch_replicator/mysql_ch_replicator/.venv/lib/python3.11/site-packages/clickhouse_connect/driver/httpclient.py", line 351, in command
response = self._raw_request(payload, params, headers, method, fields=fields, server_wait=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/username/mysql_ch_replicator/mysql_ch_replicator/.venv/lib/python3.11/site-packages/clickhouse_connect/driver/httpclient.py", line 462, in _raw_request
self._error_handler(response)
File "/home/username/mysql_ch_replicator/mysql_ch_replicator/.venv/lib/python3.11/site-packages/clickhouse_connect/driver/httpclient.py", line 385, in _error_handler
raise OperationalError(err_str) if retried else DatabaseError(err_str) from None
clickhouse_connect.driver.exceptions.DatabaseError: HTTPDriver for http://localhost:8123 received ClickHouse error code 124
Code: 124. DB::Exception: Incorrect size of tuple in set: 8 instead of 2: While processing _CAST(if((departments, termine) IN (73024, 580, 73024, 579, 73024, 645, 73024, 646), _CAST(0, 'UInt8'), _row_exists), 'UInt8'). (INCORRECT_ELEMENT_OF_SET) (version 24.11.1.2557 (official build))

I fixed it by chanching this:
git diff mysql_ch_replicator/clickhouse_api.py
diff --git a/mysql_ch_replicator/clickhouse_api.py b/mysql_ch_replicator/clickhouse_api.py
index 6dd3e6c..253d26b 100644
--- a/mysql_ch_replicator/clickhouse_api.py
+++ b/mysql_ch_replicator/clickhouse_api.py
@@ -174,7 +174,8 @@ class ClickhouseApi:

    def erase(self, table_name, field_name, field_values):
        field_name = ','.join(field_name)
-        field_values = ', '.join(list(map(str, field_values)))
+        field_values = ', '.join(f'({v})' for v in field_values)
        query = DELETE_QUERY.format(**{
            'db_name': self.database,
            'table_name': table_name,

This is the table in mariadb:
CREATE TABLE Termin_to_Department (
departments int(11) NOT NULL,
termine int(11) NOT NULL,
PRIMARY KEY (departments,termine),
KEY IDX_FC0880B716AEB8D4 (departments),
KEY IDX_FC0880B7168C0A8F (termine),
CONSTRAINT FK_FC0880B7168C0A8F FOREIGN KEY (departments) REFERENCES task_Department (id),
CONSTRAINT FK_FC0880B716AEB8D4 FOREIGN KEY (termine) REFERENCES Termin (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions