I figured it out. I don’t know the technical details, but the site I migrated was previously hosted at Flywheel. In the wp-content directory were a couple of files and directories (ai8wm-backup, db-connection.php and a 0-byte upgrade file) that were causing trouble. After removing these files, the upgrade succeeded.
Figured I might post this to help someone in the future.