Failing to run OCC / connection.php

Hi all,

I am fairly new to Nextcloud and Linux, have run some gameservers but that is about it. As probally many of you I am trying to piece togheter a solution for some home storage; with plenty of space far away from the big tech.

In order to run the gallery with tens of thousands of images i was trying to speed things up with the preview generator. Firstly it seemed like I could not run my cron jobs, but then I found out manual occ commands fail aswell.

Just an example of an attempt:

harmpi@blackcloud:~$  sudo -u www-data php /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/occ config:app:set --value="32 256" previewgenerator squareSizes
[sudo] password for harmpi:
Could not open input file: /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/occ
harmpi@blackcloud:~$ sudo php /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/occ config:app:set --value="32 256" previewgenerator squareSizes

The latter returns an error, to be specific this one:

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/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/DB/Connection.php:139
Stack trace:
#0 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/3rdparty/doctrine/dbal/src/Connection.php(1519): OC\DB\Connection->connect()
#1 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/3rdparty/doctrine/dbal/src/Connection.php(1041): Doctrine\DBAL\Connection->getWrappedConnection()
#2 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/DB/Connection.php(261): Doctrine\DBAL\Connection->executeQuery()
#3 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(345): OC\DB\Connection->executeQuery()
#4 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/DB/QueryBuilder/QueryBuilder.php(281): Doctrine\DBAL\Query\QueryBuilder->execute()
#5 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/AppConfig.php(418): OC\DB\QueryBuilder\QueryBuilder->execute()
#6 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/AppConfig.php(183): OC\AppConfig->loadConfigValues()
#7 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/AppConfig.php(374): OC\AppConfig->getApps()
#8 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/legacy/OC_App.php(967): OC\AppConfig->getValues()
#9 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/Server.php(725): OC_App::getAppVersions()
#10 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/AppFramework/Utility/SimpleContainer.php(162): OC\Server->OC\{closure}()
#11 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/3rdparty/pimple/pimple/src/Pimple/Container.php(122): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#12 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/AppFramework/Utility/SimpleContainer.php(129): Pimple\Container->offsetGet()
#13 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query()
#14 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/AppFramework/Utility/SimpleContainer.php(57): OC\ServerContainer->query()
#15 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/AppFramework/Utility/SimpleContainer.php(184): OC\AppFramework\Utility\SimpleContainer->get()
#16 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/AppFramework/Utility/SimpleContainer.php(162): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#17 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#18 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/AppFramework/Utility/SimpleContainer.php(129): Pimple\Container->offsetGet()
#19 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query()
#20 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/AppFramework/Utility/SimpleContainer.php(57): OC\ServerContainer->query()
#21 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/Server.php(1119): OC\AppFramework\Utility\SimpleContainer->get()
#22 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/AppFramework/Utility/SimpleContainer.php(162): OC\Server->OC\{closure}()
#23 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/3rdparty/pimple/pimple/src/Pimple/Container.php(122): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#24 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/AppFramework/Utility/SimpleContainer.php(129): Pimple\Container->offsetGet()
#25 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query()
#26 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/AppFramework/Utility/SimpleContainer.php(57): OC\ServerContainer->query()
#27 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/Server.php(2070): OC\AppFramework\Utility\SimpleContainer->get()
#28 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/Files/View.php(117): OC\Server->getLockingProvider()
#29 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/Server.php(462): OC\Files\View->__construct()
#30 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/AppFramework/Utility/SimpleContainer.php(162): OC\Server->OC\{closure}()
#31 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/3rdparty/pimple/pimple/src/Pimple/Container.php(122): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#32 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/AppFramework/Utility/SimpleContainer.php(129): Pimple\Container->offsetGet()
#33 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/ServerContainer.php(136): OC\AppFramework\Utility\SimpleContainer->query()
#34 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/AppFramework/Utility/SimpleContainer.php(57): OC\ServerContainer->query()
#35 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/private/Server.php(1472): OC\AppFramework\Utility\SimpleContainer->get()
#36 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/base.php(617): OC\Server->boot()
#37 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/lib/base.php(1144): OC::init()
#38 /var/snap/docker/common/var-lib-docker/volumes/nextcloud_nextcloud/_data/console.php(48): require_once('...')

It seems to point to the connection.php
And when I look this up i find this at the lines it is referring too:

	/**
	 * @throws Exception
	 */
	public function connect() {
		try {
			if ($this->_conn) {
				return parent::connect();
			}

			// Only trigger the event logger for the initial connect call
			$eventLogger = \OC::$server->getEventLogger();
			$eventLogger->start('connect:db', 'db connection opened');
			$status = parent::connect();
			$eventLogger->end('connect:db');

			return $status;
		} catch (Exception $e) {
			// throw a new exception to prevent leaking info from the stacktrace
			throw new Exception('Failed to connect to the database: ' . $e->getMessage(), $e->getCode());
		}
	}

	public function getStats(): array {
		return [
			'built' => $this->queriesBuilt,
			'executed' => $this->queriesExecuted,
		];
	}

Just to be sure the config.php:

<?php
$CONFIG = array (
  'htaccess.RewriteBase' => '/',
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'apps_paths' => 
  array (
    0 => 
    array (
      'path' => '/var/www/html/apps',
      'url' => '/apps',
      'writable' => false,
    ),
    1 => 
    array (
      'path' => '/var/www/html/custom_apps',
      'url' => '/custom_apps',
      'writable' => true,
    ),
  ),
  'instanceid' => 'ocjtfpu9is47',
  'passwordsalt' => 'notimportanttoshare',
  'secret' => 'notimportanttoshare',
  'trusted_domains' => 
  array (
    0 => '192.168.2.12:8080',
    1 => 'notimportanttoshare',
  ),
  'datadirectory' => '/var/www/html/data',
  'dbtype' => 'mysql',
  'version' => '25.0.4.1',
  'overwrite.cli.url' => 'http://192.168.2.12:8080',
  'dbname' => 'nextcloud',
  'dbhost' => '172.18.0.2:3306',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'nextcloud',
  'dbpassword' => 'notimportanttoshare',
  'installed' => true,
  'app_install_overwrite' => 
  array (
    0 => 'duplicatefinder',
    1 => 'occweb',
    2 => 'socialsharing_email',
  ),
);

Any thoughts?

Some more info, here is the php version info:

## PHP

Version: *8.1.16*

Memory limit: *512 MB*

Max execution time: *3600*

Upload max size: *512 MB*

Extensions: *Core, date, libxml, openssl, pcre, sqlite3, zlib, ctype, curl, dom, fileinfo, filter, ftp, hash, iconv, json, mbstring, SPL, session, PDO, pdo_sqlite, standard, posix, Reflection, Phar, SimpleXML, tokenizer, xml, xmlreader, xmlwriter, mysqlnd, apache2handler, apcu, bcmath, exif, gd, gmp, imagick, intl, ldap, memcached, pcntl, pdo_mysql, pdo_pgsql, redis, sodium, zip, Zend OPcache*

And the database info:

Type: *mysql*

Version: *10.11.2*

Size: *142.4 MB*

I basically run on MariaBD with next to no changed settings.

Any thoughts on this?

hello @CloudedSkies welcome to the forum :handshake:

I’m not familiar with snap but this line looks like you try to run a command on the host rather inside of the container:

likely this is the reason it doesn’t find right config and can’t connect to the database…