setup:upgrade or the schema upgrade is stuck. Can you recover it?
Yes. A setup:upgrade that hangs or half-applies usually leaves the setup_module and patch_list tables in a state where Magento thinks a step ran when it did not, or vice-versa. We inspect the module and patch version tables, reconcile them with what actually applied to the database, finish or roll back the pending schema change safely, and re-run the upgrade to a clean finish. This is delicate work, so we always take a database snapshot first.