Am in process of a v11 (binary) to v12 (docker) upgrade, and seahub loads fine in browser, but submitting login information ends in 500 response with following logs (full gist here):
seahub.log:
MySQLdb.OperationalError: (1054, “Unknown column ‘profile_profile.is_manually_set_contact_email’ in ‘field list’”)
seafile.log:
[2026-04-19 20:14:18] [WARNING] ../common/seaf-db.c(928): Failed to prepare sql SELECT r.repo_id, s.size, b.commit_id, v.repo_id, v.origin_repo, v.path, v.base_commit, fc.file_count, i.status, i.type FROM Repo r LEFT JOIN Branch b ON r.repo_id = b.repo_id LEFT JOIN RepoSize s ON r.repo_id = s.repo_id LEFT JOIN VirtualRepo v ON r.repo_id = v.repo_id LEFT JOIN RepoFileCount fc ON r.repo_id = fc.repo_id LEFT JOIN RepoInfo i on r.repo_id = i.repo_id WHERE r.repo_id = ? AND b.name = ‘master’: Unknown column ‘i.type’ in ‘field list’
[2026-04-19 20:14:18] [WARNING] seafile-session.c(616): Failed to get system default repo. Create a new one.
[2026-04-19 20:14:18] [WARNING] ../common/seaf-db.c(928): Failed to prepare sql SELECT r.repo_id, s.size, b.commit_id, v.repo_id, v.origin_repo, v.path, v.base_commit, fc.file_count, i.status, i.type FROM Repo r LEFT JOIN Branch b ON r.repo_id = b.repo_id LEFT JOIN RepoSize s ON r.repo_id = s.repo_id LEFT JOIN VirtualRepo v ON r.repo_id = v.repo_id LEFT JOIN RepoFileCount fc ON r.repo_id = fc.repo_id LEFT JOIN RepoInfo i on r.repo_id = i.repo_id WHERE r.repo_id = ? AND b.name = ‘master’: Unknown column ‘i.type’ in ‘field list’
[2026-04-19 20:14:18] [WARNING] repo-op.c(666): Repo 8d20987e-966d-4451-a359-988fea114495 doesn’t exist.
[2026-04-19 20:14:18] [WARNING] seafile-session.c(579): Failed to add template file /opt/seafile/seafile-data/library-template/seafile-tutorial.doc.
This suggest there’s again some db migration error as per usual. Would roll back and retry, but have no idea where I made the mistake.
To be clear, we’re not required to manually run migration scripts anymore with the docker-based deployments, are we?
Why do these broken states occur so often with seafile upgrades? Why does it even allow service to start when migration clearly has failed at some point?