Background info: we were experiencing this issue after a migration from WP Engine to Flywheel (via the Migrate Guru plugin). None of the parties is at fault – the fact that the wc_download_log table’s prefix changed is likely to blame.
We found that table in our DB and dropped it.
Then we deactivated and reactivated the WooCommerce core plugin. It re-created the table and downloads work fine now. No code was touched.