ECS: ECSSync Geçiş Hatası: MySQLSyntaxErrorException: 'Alan listesi'nde bilinmeyen 'source_md5' sütunu
摘要: ECSSync geçişi, Centera kliplerinin hiçbiri taşınmadan anında tamamlanır.
症状
Sorun, Centera'dan ECS'ye ECSSync geçişi sırasında oluşur.
ECSSync geçişi, taşınacak Centera kliplerinden herhangi biri olmadan anında tamamlanır.
/var/log/ecssync/ecs-sync.log dosyasında aşağıdaki hata görüntülenir:
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> ..
原因
Hata, ECSSync'in önceki bir sürümü tarafından oluşturulan bir veritabanı tablosu kullandığınız için oluşur.
Aşağıda, en son prosedüre göre oluşturulan tabloya bir örnek verilmiştir. Bu tablo, source_md5 sütununu içermez:
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 sürüm 3.2.9, kaynak MD5 sağlama toplamını izlemek için veritabanı tablosuna bir sütun ekledi (bu, sürüm notlarında belirtilmiştir).
解决方案
Bu sürüme yükselttikten sonra yeni bir veritabanı tablosu oluşturmanız veya uygun sütunu eklemeniz gerekir. MySQL kabuğunda aşağıdakileri gerçekleştirin:
alter table <table_name> add column source_md5 VARCHAR(32);
Tablo, ek sütunla birlikte aşağıdaki örnekteki gibi görünmelidir:
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]>
(burada <table_name> mevcut tablonuzun adıdır).