ECS: ECSSync-Migrationsfehler: MySQLSyntaxErrorException: Unbekannte Spalte 'source_md5' in 'Feldliste'
Summary: Die ECSSync-Migration wird sofort abgeschlossen, ohne dass einer der Centera-Clips tatsächlich migriert wird.
Symptoms
Das Problem tritt während einer ECSSync-Migration von Centera zu ECS auf.
Die ECSSync-Migration wird sofort abgeschlossen, ohne dass einer der Centera-Clips tatsächlich migriert werden muss.
In der Datei /var/log/ecssync/ecs-sync.log wird der folgende Fehler angezeigt:
2020-05-04 03:08:38 WARN [sync-pool-1-t-15] SyncTask: O--! object DNVBT3VHL1NE1e2NMV9CJDMQV5FG41BCFNF5EM0AC0A4KU05821DC failed
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'source_md5' in 'field list'
at sun.reflect.GeneratedConstructorAccessor29.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
... <output truncated> ..
Cause
Der Fehler tritt auf, weil Sie eine Datenbanktabelle verwenden, die von einer früheren Version von ECSSync erstellt wurde.
Im Folgenden finden Sie ein Beispiel für die Tabelle, die gemäß dem neuesten Verfahren erstellt wurde. Diese Tabelle enthält nicht die Spalte source_md5:
MariaDB [ecs_sync]> describe <table_name>; +-------------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------------+---------------+------+-----+---------+-------+ | source_id | varchar(54) | NO | PRI | NULL | | | target_id | varchar(54) | YES | | NULL | | | is_directory | int(11) | NO | | NULL | | | size | bigint(20) | YES | | NULL | | | mtime | datetime | YES | | NULL | | | status | varchar(32) | NO | MUL | NULL | | | transfer_start | datetime | YES | | NULL | | | transfer_complete | datetime | YES | | NULL | | | verify_start | datetime | YES | | NULL | | | verify_complete | datetime | YES | | NULL | | | retry_count | int(11) | YES | | NULL | | | error_message | varchar(2048) | YES | | NULL | | | is_source_deleted | int(11) | YES | | NULL | | +-------------------+---------------+------+-----+---------+-------+ 13 rows in set (0.00 sec)
ECSSync-Version 3.2.9 hat der Datenbanktabelle eine Spalte hinzugefügt, um die MD5-Quellprüfsumme nachzuverfolgen (dies wird in den Versionshinweisen erwähnt).
Resolution
Nach dem Upgrade auf diese Version müssen Sie entweder eine neue Datenbanktabelle erstellen oder die entsprechende Spalte hinzufügen. Führen Sie die folgenden Schritte in einer MySQL-Shell aus:
alter table <table_name> add column source_md5 VARCHAR(32);
Die Tabelle sollte wie im folgenden Beispiel aussehen, mit der zusätzlichen Spalte:
MariaDB [ecs_sync]> describe <table_name>; +-------------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------------+---------------+------+-----+---------+-------+ | source_id | varchar(54) | NO | PRI | NULL | | | target_id | varchar(54) | YES | | NULL | | | is_directory | int(11) | NO | | NULL | | | size | bigint(20) | YES | | NULL | | | mtime | datetime | YES | | NULL | | | status | varchar(32) | NO | MUL | NULL | | | transfer_start | datetime | YES | | NULL | | | transfer_complete | datetime | YES | | NULL | | | verify_start | datetime | YES | | NULL | | | verify_complete | datetime | YES | | NULL | | | retry_count | int(11) | YES | | NULL | | | error_message | varchar(2048) | YES | | NULL | | | is_source_deleted | int(11) | YES | | NULL | | | source_md5 | varchar(32) | YES | | NULL | | +-------------------+---------------+------+-----+---------+-------+ 14 rows in set (0.00 sec) MariaDB [ecs_sync]>
(Dabei <ist table_name> der Name Ihrer vorhandenen Tabelle).