ECS: Errore di migrazione ECSSync: MySQLSyntaxErrorException: Colonna sconosciuta 'source_md5' in 'elenco campi'
Summary: La migrazione di ECSSync viene immediatamente completata senza che nessuna delle clip Centera venga effettivamente migrata.
Symptoms
Il problema si verifica durante una migrazione ECSSync da Centera a ECS.
La migrazione di ECSSync viene immediatamente completata senza che nessuno dei clip Centera venga effettivamente migrato.
Nel file /var/log/ecssync/ecs-sync.log viene visualizzato il seguente errore:
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
L'errore si verifica perché si utilizza una tabella di database creata da una versione precedente di ECSSync.
Di seguito è riportato un esempio della tabella creata in base alla procedura più recente. Questa tabella non include la colonna 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 versione 3.2.9 ha aggiunto una colonna alla tabella del database per tenere traccia del checksum MD5 di origine (menzionato nelle note di rilascio).
Resolution
Dopo l'aggiornamento a questa versione, è necessario creare una nuova tabella di database o aggiungere la colonna appropriata. Effettuare le seguenti operazioni in una shell MySQL:
alter table <table_name> add column source_md5 VARCHAR(32);
La tabella dovrebbe essere simile all'esempio seguente, con la colonna aggiuntiva:
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]>
(dove <table_name> è il nome della tabella esistente).