had to add this check here because `Migrate()` above does not return an error (it logs the error and silently rolls back the transaction)