ECS : ECSSync Migration Error : MySQLSyntaxErrorException : Colonne inconnue 'source_md5' dans 'liste des champs'
Summary: La migration ECSSync se termine instantanément sans qu’aucun des clips Centera ne soit réellement migré.
Symptoms
Le problème se produit lors d’une migration d’ECSSync de Centera vers ECS.
La migration ECSSync se termine instantanément sans aucun des clips Centera à migrer.
Dans le fichier /var/log/ecssync/ecs-sync.log, l’erreur suivante apparaît :
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’erreur se produit car vous utilisez une table de base de données qui a été créée par une version antérieure d’ECSSync.
Vous trouverez ci-dessous un exemple de tableau créé conformément à la dernière procédure. Ce tableau n’inclut pas la colonne 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 a ajouté une colonne au tableau de base de données pour suivre la somme de contrôle MD5 source (ceci est mentionné dans les notes de mise à jour).
Resolution
Après la mise à niveau vers cette version, vous devez créer une nouvelle table de base de données ou ajouter la colonne appropriée. Exécutez les opérations suivantes dans un shell MySQL :
alter table <table_name> add column source_md5 VARCHAR(32);
Le tableau doit ressembler à l’exemple suivant, avec la colonne supplémentaire :
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]>
(où <table_name> est le nom de votre table existante).