Trouble with migrating Nextcloud to another server

I have a Nextcloud instance (version 21.0.0.8) that I wanted to migrate over to a new server. The original server runs Ubuntu Server 20.04, the new one runs Debian 10. I have followed the backup and restoration procedure on the NC documentation and when I try to access the main page it gives me an “Internal server error”. By launching the command sudo -u www-data php occ integrity:check-core in the NC folder I get this output:

An unhandled exception has been thrown: Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: could not find driver in /var/www/html/nextcloud/lib/private/DB/Connection.php:85 Stack trace: #0 /var/www/html/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1486): OC\DB\Connection->connect() #1 /var/www/html/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1014): Doctrine\DBAL\Connection->getWrappedConnection() #2 /var/www/html/nextcloud/lib/private/DB/Connection.php(226): Doctrine\DBAL\Connection->executeQuery('SELECT * FROM "...', Array, Array, NULL) #3 /var/www/html/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(210): OC\DB\Connection->executeQuery('SELECT * FROM "...', Array, Array) #4 /var/www/html/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(286): Doctrine\DBAL\Query\QueryBuilder->execute() #5 /var/www/html/nextcloud/lib/private/AppConfig.php(345): OC\DB\QueryBuilder\QueryBuilder->execute() #6 /var/www/html/nextcloud/lib/private/AppConfig.php(110): OC\AppConfig->loadConfigValues() #7 /var/www/html/nextcloud/lib/private/AppConfig.php(301): OC\AppConfig->getApps() #8 /var/www/html/nextcloud/lib/private/legacy/OC_App.php(957): OC\AppConfig->getValues(false, 'installed_versi...') #9 /var/www/html/nextcloud/lib/private/Server.php(678): OC_App::getAppVersions() #10 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\Server->OC\{closure}(Object(OC\Server)) #11 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container)) #12 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OC\\Memcache\\Fac...') #13 /var/www/html/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OC\\Memcache\\Fac...', false) #14 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OC\\Memcache\\Fac...') #15 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(177): OC\AppFramework\Utility\SimpleContainer->get('OC\\Memcache\\Fac...') #16 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server)) #17 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container)) #18 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OCP\\ICacheFacto...') #19 /var/www/html/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OCP\\ICacheFacto...', false) #20 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OCP\\ICacheFacto...') #21 /var/www/html/nextcloud/lib/private/Server.php(1018): OC\AppFramework\Utility\SimpleContainer->get('OCP\\ICacheFacto...') #22 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\Server->OC\{closure}(Object(OC\Server)) #23 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container)) #24 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OCP\\Lock\\ILocki...') #25 /var/www/html/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OCP\\Lock\\ILocki...', false) #26 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OCP\\Lock\\ILocki...') #27 /var/www/html/nextcloud/lib/private/Server.php(1977): OC\AppFramework\Utility\SimpleContainer->get('OCP\\Lock\\ILocki...') #28 /var/www/html/nextcloud/lib/private/Files/View.php(119): OC\Server->getLockingProvider() #29 /var/www/html/nextcloud/lib/private/Server.php(426): OC\Files\View->__construct() #30 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\Server->OC\{closure}(Object(OC\Server)) #31 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container)) #32 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OC\\Files\\Node\\H...') #33 /var/www/html/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OC\\Files\\Node\\H...', false) #34 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OC\\Files\\Node\\H...') #35 /var/www/html/nextcloud/lib/private/Server.php(1340): OC\AppFramework\Utility\SimpleContainer->get('OC\\Files\\Node\\H...') #36 /var/www/html/nextcloud/lib/base.php(588): OC\Server->boot() #37 /var/www/html/nextcloud/lib/base.php(1076): OC::init() #38 /var/www/html/nextcloud/console.php(49): require_once('/var/www/html/n...') #39 /var/www/html/nextcloud/occ(11): require_once('/var/www/html/n...')

So obviously there is a problem accessing the database.
Exception: Failed to connect to the database

could not find driver...

  • did you transfer the database content and the database user privileges?
  • is the PHP MySQL module installed?
  • can you access the database manually or by phpMyAdmin?
  • are the database credentials updated in the config.php?
  1. I followed the guide on how to backup and restore things perfectly so in theory I should have moved everything.
  2. Yes, it is installed.
  3. I can open it with some database viewer app and it doesn’t look corrupted or anything.
  4. How can I know for sure?

Well you need to open a text editor on your instance and check config/config.php. Surely you have command line access to your server?