ECS: Error de migración de ECSSync: MySQLSyntaxErrorException: Columna desconocida 'source_md5' en 'lista de campos'
Summary: La migración de ECSSync se completa instantáneamente sin que ninguno de los clips de Centera se migre realmente.
Symptoms
El problema se produce durante una migración de ECSSync de Centera a ECS.
La migración de ECSSync se completa instantáneamente sin que se migre ninguno de los clips de Centera.
En el archivo /var/log/ecssync/ecs-sync.log, aparece el siguiente error:
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
El error se produce porque está utilizando una tabla de base de datos creada por una versión anterior de ECSSync.
El siguiente es un ejemplo de la tabla creada según el procedimiento más reciente. En esta tabla, no se incluye la columna 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)
En la versión 3.2.9 de ECSSync se agregó una columna a la tabla de la base de datos para rastrear la suma de comprobación MD5 de origen (esto se menciona en las notas de la versión).
Resolution
Después de actualizar a esta versión, debe crear una nueva tabla de base de datos o agregar la columna correspondiente. Realice lo siguiente en un shell de MySQL:
alter table <table_name> add column source_md5 VARCHAR(32);
La tabla debe verse como el siguiente ejemplo, con la columna adicional:
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]>
(donde <table_name> es el nombre de la tabla existente).