Getting started with occ and getting stuck with db permissions

Hello there,

I have installed nc21 on a fresh Debian Buster server, the installation didn’t go well, but the database seems to have been installed and the config file has

installed => true

So I guess it installed well.

When I try to run the occ from the command line as the www-data user (this is the user that runs the nginx web server on debian) I get database permission problems (trace below)

root#cloud 16:26:41 ~ # su www-data -s /bin/bash -
www-data@cloud:/root$ cd /var/www/nextcloud
www-data@cloud:~/nextcloud$ ls
3rdparty  apps  AUTHORS  config  console.php  COPYING  core  cron.php  data  index.html  index.php  lib  occ  ocm-provider  ocs  ocs-provider  public.php  remote.php  resources  robots.txt  status.php  themes  updater  version.php
www-data@cloud:~/nextcloud$ php occ
An unhandled exception has been thrown:
PDOException: SQLSTATE[42501]: Insufficient privilege: 7 ERROR:  permission denied for table oc_appconfig in /var/www/nextcloud/3rdparty/doctrine/dbal/src/Driver/PDO/Connection.php:82
Stack trace:
#0 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Driver/PDO/Connection.php(82): PDO->query('SELECT * FROM "...')
#1 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1035): Doctrine\DBAL\Driver\PDO\Connection->query('SELECT * FROM "...')
#2 /var/www/nextcloud/lib/private/DB/Connection.php(226): Doctrine\DBAL\Connection->executeQuery('SELECT * FROM "...', Array, Array, NULL)
#3 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(210): OC\DB\Connection->executeQuery('SELECT * FROM "...', Array, Array)
#4 /var/www/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(286): Doctrine\DBAL\Query\QueryBuilder->execute()
#5 /var/www/nextcloud/lib/private/AppConfig.php(345): OC\DB\QueryBuilder\QueryBuilder->execute()
#6 /var/www/nextcloud/lib/private/AppConfig.php(110): OC\AppConfig->loadConfigValues()
#7 /var/www/nextcloud/lib/private/AppConfig.php(301): OC\AppConfig->getApps()
#8 /var/www/nextcloud/lib/private/legacy/OC_App.php(957): OC\AppConfig->getValues(false, 'installed_versi...')
#9 /var/www/nextcloud/lib/private/Server.php(678): OC_App::getAppVersions()
#10 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\Server->OC\{closure}(Object(OC\Server))
#11 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container))
#12 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OC\\Memcache\\Fac...')
#13 /var/www/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OC\\Memcache\\Fac...', false)
#14 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OC\\Memcache\\Fac...')
#15 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(177): OC\AppFramework\Utility\SimpleContainer->get('OC\\Memcache\\Fac...')
#16 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#17 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container))
#18 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OCP\\ICacheFacto...')
#19 /var/www/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OCP\\ICacheFacto...', false)
#20 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OCP\\ICacheFacto...')
#21 /var/www/nextcloud/lib/private/Server.php(1018): OC\AppFramework\Utility\SimpleContainer->get('OCP\\ICacheFacto...')
#22 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\Server->OC\{closure}(Object(OC\Server))
#23 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container))
#24 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OCP\\Lock\\ILocki...')
#25 /var/www/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OCP\\Lock\\ILocki...', false)
#26 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OCP\\Lock\\ILocki...')
#27 /var/www/nextcloud/lib/private/Server.php(1977): OC\AppFramework\Utility\SimpleContainer->get('OCP\\Lock\\ILocki...')
#28 /var/www/nextcloud/lib/private/Files/View.php(119): OC\Server->getLockingProvider()
#29 /var/www/nextcloud/lib/private/Server.php(426): OC\Files\View->__construct()
#30 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\Server->OC\{closure}(Object(OC\Server))
#31 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container))
#32 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OC\\Files\\Node\\H...')
#33 /var/www/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OC\\Files\\Node\\H...', false)
#34 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OC\\Files\\Node\\H...')
#35 /var/www/nextcloud/lib/private/Server.php(1340): OC\AppFramework\Utility\SimpleContainer->get('OC\\Files\\Node\\H...')
#36 /var/www/nextcloud/lib/base.php(588): OC\Server->boot()
#37 /var/www/nextcloud/lib/base.php(1076): OC::init()
#38 /var/www/nextcloud/console.php(49): require_once('/var/www/nextcl...')
#39 /var/www/nextcloud/occ(11): require_once('/var/www/nextcl...')
#40 {main}

Next Doctrine\DBAL\Driver\PDO\Exception: SQLSTATE[42501]: Insufficient privilege: 7 ERROR:  permission denied for table oc_appconfig in /var/www/nextcloud/3rdparty/doctrine/dbal/src/Driver/PDO/Exception.php:26
Stack trace:
#0 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Driver/PDO/Connection.php(87): Doctrine\DBAL\Driver\PDO\Exception::new(Object(PDOException))
#1 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1035): Doctrine\DBAL\Driver\PDO\Connection->query('SELECT * FROM "...')
#2 /var/www/nextcloud/lib/private/DB/Connection.php(226): Doctrine\DBAL\Connection->executeQuery('SELECT * FROM "...', Array, Array, NULL)
#3 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(210): OC\DB\Connection->executeQuery('SELECT * FROM "...', Array, Array)
#4 /var/www/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(286): Doctrine\DBAL\Query\QueryBuilder->execute()
#5 /var/www/nextcloud/lib/private/AppConfig.php(345): OC\DB\QueryBuilder\QueryBuilder->execute()
#6 /var/www/nextcloud/lib/private/AppConfig.php(110): OC\AppConfig->loadConfigValues()
#7 /var/www/nextcloud/lib/private/AppConfig.php(301): OC\AppConfig->getApps()
#8 /var/www/nextcloud/lib/private/legacy/OC_App.php(957): OC\AppConfig->getValues(false, 'installed_versi...')
#9 /var/www/nextcloud/lib/private/Server.php(678): OC_App::getAppVersions()
#10 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\Server->OC\{closure}(Object(OC\Server))
#11 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container))
#12 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OC\\Memcache\\Fac...')
#13 /var/www/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OC\\Memcache\\Fac...', false)
#14 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OC\\Memcache\\Fac...')
#15 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(177): OC\AppFramework\Utility\SimpleContainer->get('OC\\Memcache\\Fac...')
#16 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#17 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container))
#18 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OCP\\ICacheFacto...')
#19 /var/www/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OCP\\ICacheFacto...', false)
#20 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OCP\\ICacheFacto...')
#21 /var/www/nextcloud/lib/private/Server.php(1018): OC\AppFramework\Utility\SimpleContainer->get('OCP\\ICacheFacto...')
#22 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\Server->OC\{closure}(Object(OC\Server))
#23 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container))
#24 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OCP\\Lock\\ILocki...')
#25 /var/www/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OCP\\Lock\\ILocki...', false)
#26 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OCP\\Lock\\ILocki...')
#27 /var/www/nextcloud/lib/private/Server.php(1977): OC\AppFramework\Utility\SimpleContainer->get('OCP\\Lock\\ILocki...')
#28 /var/www/nextcloud/lib/private/Files/View.php(119): OC\Server->getLockingProvider()
#29 /var/www/nextcloud/lib/private/Server.php(426): OC\Files\View->__construct()
#30 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\Server->OC\{closure}(Object(OC\Server))
#31 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container))
#32 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OC\\Files\\Node\\H...')
#33 /var/www/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OC\\Files\\Node\\H...', false)
#34 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OC\\Files\\Node\\H...')
#35 /var/www/nextcloud/lib/private/Server.php(1340): OC\AppFramework\Utility\SimpleContainer->get('OC\\Files\\Node\\H...')
#36 /var/www/nextcloud/lib/base.php(588): OC\Server->boot()
#37 /var/www/nextcloud/lib/base.php(1076): OC::init()
#38 /var/www/nextcloud/console.php(49): require_once('/var/www/nextcl...')
#39 /var/www/nextcloud/occ(11): require_once('/var/www/nextcl...')
#40 {main}

Next Doctrine\DBAL\Exception\DriverException: An exception occurred while executing a query: SQLSTATE[42501]: Insufficient privilege: 7 ERROR:  permission denied for table oc_appconfig in /var/www/nextcloud/3rdparty/doctrine/dbal/src/Driver/API/PostgreSQL/ExceptionConverter.php:83
Stack trace:
#0 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1728): Doctrine\DBAL\Driver\API\PostgreSQL\ExceptionConverter->convert(Object(Doctrine\DBAL\Driver\PDO\Exception), Object(Doctrine\DBAL\Query))
#1 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1667): Doctrine\DBAL\Connection->handleDriverException(Object(Doctrine\DBAL\Driver\PDO\Exception), Object(Doctrine\DBAL\Query))
#2 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1040): Doctrine\DBAL\Connection->convertExceptionDuringQuery(Object(Doctrine\DBAL\Driver\PDO\Exception), 'SELECT * FROM "...', Array, Array)
#3 /var/www/nextcloud/lib/private/DB/Connection.php(226): Doctrine\DBAL\Connection->executeQuery('SELECT * FROM "...', Array, Array, NULL)
#4 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(210): OC\DB\Connection->executeQuery('SELECT * FROM "...', Array, Array)
#5 /var/www/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(286): Doctrine\DBAL\Query\QueryBuilder->execute()
#6 /var/www/nextcloud/lib/private/AppConfig.php(345): OC\DB\QueryBuilder\QueryBuilder->execute()
#7 /var/www/nextcloud/lib/private/AppConfig.php(110): OC\AppConfig->loadConfigValues()
#8 /var/www/nextcloud/lib/private/AppConfig.php(301): OC\AppConfig->getApps()
#9 /var/www/nextcloud/lib/private/legacy/OC_App.php(957): OC\AppConfig->getValues(false, 'installed_versi...')
#10 /var/www/nextcloud/lib/private/Server.php(678): OC_App::getAppVersions()
#11 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\Server->OC\{closure}(Object(OC\Server))
#12 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container))
#13 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OC\\Memcache\\Fac...')
#14 /var/www/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OC\\Memcache\\Fac...', false)
#15 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OC\\Memcache\\Fac...')
#16 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(177): OC\AppFramework\Utility\SimpleContainer->get('OC\\Memcache\\Fac...')
#17 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#18 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container))
#19 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OCP\\ICacheFacto...')
#20 /var/www/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OCP\\ICacheFacto...', false)
#21 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OCP\\ICacheFacto...')
#22 /var/www/nextcloud/lib/private/Server.php(1018): OC\AppFramework\Utility\SimpleContainer->get('OCP\\ICacheFacto...')
#23 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\Server->OC\{closure}(Object(OC\Server))
#24 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container))
#25 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OCP\\Lock\\ILocki...')
#26 /var/www/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OCP\\Lock\\ILocki...', false)
#27 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OCP\\Lock\\ILocki...')
#28 /var/www/nextcloud/lib/private/Server.php(1977): OC\AppFramework\Utility\SimpleContainer->get('OCP\\Lock\\ILocki...')
#29 /var/www/nextcloud/lib/private/Files/View.php(119): OC\Server->getLockingProvider()
#30 /var/www/nextcloud/lib/private/Server.php(426): OC\Files\View->__construct()
#31 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\Server->OC\{closure}(Object(OC\Server))
#32 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container))
#33 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OC\\Files\\Node\\H...')
#34 /var/www/nextcloud/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OC\\Files\\Node\\H...', false)
#35 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(56): OC\ServerContainer->query('OC\\Files\\Node\\H...')
#36 /var/www/nextcloud/lib/private/Server.php(1340): OC\AppFramework\Utility\SimpleContainer->get('OC\\Files\\Node\\H...')
#37 /var/www/nextcloud/lib/base.php(588): OC\Server->boot()
#38 /var/www/nextcloud/lib/base.php(1076): OC::init()
#39 /var/www/nextcloud/console.php(49): require_once('/var/www/nextcl...')
#40 /var/www/nextcloud/occ(11): require_once('/var/www/nextcl...')
#41 {main}www-data@cloud:~/nextcloud$

Please advise on how to troubleshoot this, which is even more surprising since the database tables have been automatically created via the installation wizard (web ui), here’s a postgresql trace :

nextcloud-# \pset pager off
Pager usage is off.
nextcloud-# \dt
                    List of relations
 Schema |            Name             | Type  |   Owner   
--------+-----------------------------+-------+-----------
 public | oc_accounts                 | table | nextcloud
 public | oc_accounts_data            | table | nextcloud
 public | oc_activity                 | table | nextcloud
 public | oc_activity_mq              | table | nextcloud
 public | oc_addressbookchanges       | table | nextcloud
 public | oc_addressbooks             | table | nextcloud
 public | oc_appconfig                | table | nextcloud
 public | oc_authtoken                | table | nextcloud
 public | oc_bruteforce_attempts      | table | nextcloud
 public | oc_calendar_invitations     | table | nextcloud
 public | oc_calendar_reminders       | table | nextcloud
 public | oc_calendar_resources       | table | nextcloud
 public | oc_calendar_resources_md    | table | nextcloud
 public | oc_calendar_rooms           | table | nextcloud
 public | oc_calendar_rooms_md        | table | nextcloud
 public | oc_calendarchanges          | table | nextcloud
 public | oc_calendarobjects          | table | nextcloud
 public | oc_calendarobjects_props    | table | nextcloud
 public | oc_calendars                | table | nextcloud
 public | oc_calendarsubscriptions    | table | nextcloud
 public | oc_cards                    | table | nextcloud
 public | oc_cards_properties         | table | nextcloud
 public | oc_collres_accesscache      | table | nextcloud
 public | oc_collres_collections      | table | nextcloud
 public | oc_collres_resources        | table | nextcloud
 public | oc_comments                 | table | nextcloud
 public | oc_comments_read_markers    | table | nextcloud
 public | oc_dav_cal_proxy            | table | nextcloud
 public | oc_dav_shares               | table | nextcloud
 public | oc_direct_edit              | table | nextcloud
 public | oc_directlink               | table | nextcloud
 public | oc_federated_reshares       | table | nextcloud
 public | oc_file_locks               | table | nextcloud
 public | oc_filecache                | table | nextcloud
 public | oc_filecache_extended       | table | nextcloud
 public | oc_files_trash              | table | nextcloud
 public | oc_flow_checks              | table | nextcloud
 public | oc_flow_operations          | table | nextcloud
 public | oc_flow_operations_scope    | table | nextcloud
 public | oc_group_admin              | table | nextcloud
 public | oc_group_user               | table | nextcloud
 public | oc_groups                   | table | nextcloud
 public | oc_jobs                     | table | nextcloud
 public | oc_login_flow_v2            | table | nextcloud
 public | oc_migrations               | table | nextcloud
 public | oc_mimetypes                | table | nextcloud
 public | oc_mounts                   | table | nextcloud
 public | oc_notifications            | table | nextcloud
 public | oc_notifications_pushtokens | table | nextcloud
 public | oc_oauth2_access_tokens     | table | nextcloud
 public | oc_oauth2_clients           | table | nextcloud
 public | oc_preferences              | table | nextcloud
 public | oc_privacy_admins           | table | nextcloud
 public | oc_properties               | table | nextcloud
 public | oc_recent_contact           | table | nextcloud
 public | oc_schedulingobjects        | table | nextcloud
 public | oc_share                    | table | nextcloud
 public | oc_share_external           | table | nextcloud
 public | oc_storages                 | table | nextcloud
 public | oc_storages_credentials     | table | nextcloud
 public | oc_systemtag                | table | nextcloud
 public | oc_systemtag_group          | table | nextcloud
 public | oc_systemtag_object_mapping | table | nextcloud
 public | oc_text_documents           | table | nextcloud
 public | oc_text_sessions            | table | nextcloud
 public | oc_text_steps               | table | nextcloud
 public | oc_trusted_servers          | table | nextcloud
 public | oc_twofactor_backupcodes    | table | nextcloud
 public | oc_twofactor_providers      | table | nextcloud
 public | oc_user_status              | table | nextcloud
 public | oc_user_transfer_owner      | table | nextcloud
 public | oc_users                    | table | nextcloud
 public | oc_vcategory                | table | nextcloud
 public | oc_vcategory_to_object      | table | nextcloud
 public | oc_webauthn                 | table | nextcloud
 public | oc_whats_new                | table | nextcloud
(76 rows)

nextcloud-#

Any help or hint at getting occ to work welcome.

1 Like

I also have a simliar problem on an old (working) install with nextcloud 15 with a maria db backend on a debian 9

www-data@app-server:~/nextcloud$ php occ
An unhandled exception has been thrown:
Doctrine\DBAL\DBALException: Failed to connect to the database: An exception occured in driver: could not find driver in /var/www/nextcloud/lib/private/DB/Connection.php:64
Stack trace:
#0 /var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(429): OC\DB\Connection->connect()
#1 /var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(389): Doctrine\DBAL\Connection->getDatabasePlatformVersion()
#2 /var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(328): Doctrine\DBAL\Connection->detectDatabasePlatform()
#3 /var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(623): Doctrine\DBAL\Connection->getDatabasePlatform()
#4 /var/www/nextcloud/lib/private/DB/Connection.php(151): Doctrine\DBAL\Connection->setTransactionIsolation(2)
#5 /var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php(172): OC\DB\Connection->__construct(Array, Object(Doctrine\DBAL\Driver\PDOMySql\Driver), Object(Doctrine\DBAL\Configuration), Object(Doctrine\Common\EventManager))
#6 /var/www/nextcloud/lib/private/DB/ConnectionFactory.php(158): Doctrine\DBAL\DriverManager::getConnection(Array, Object(Doctrine\DBAL\Configuration), Object(Doctrine\Common\EventManager))
#7 /var/www/nextcloud/lib/private/Server.php(641): OC\DB\ConnectionFactory->getConnection('mysql', Array)
#8 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))
#9 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('OCP\\IDBConnecti...')
#10 /var/www/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OCP\\IDBConnecti...')
#11 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(165): OC\ServerContainer->query('OCP\\IDBConnecti...')
#12 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#13 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('DatabaseConnect...')
#14 /var/www/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('DatabaseConnect...')
#15 /var/www/nextcloud/lib/private/Server.php(1552): OC\ServerContainer->query('DatabaseConnect...')
#16 /var/www/nextcloud/lib/private/Server.php(360): OC\Server->getDatabaseConnection()
#17 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))
#18 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('OC\\Authenticati...')
#19 /var/www/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\Authenticati...')
#20 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(68): OC\ServerContainer->query('OC\\Authenticati...')
#21 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(98): OC\AppFramework\Utility\SimpleContainer->buildClass(Object(ReflectionClass))
#22 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(119): OC\AppFramework\Utility\SimpleContainer->resolve('OC\\Authenticati...')
#23 /var/www/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\Authenticati...')
#24 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(68): OC\ServerContainer->query('OC\\Authenticati...')
#25 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(98): OC\AppFramework\Utility\SimpleContainer->buildClass(Object(ReflectionClass))
#26 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(119): OC\AppFramework\Utility\SimpleContainer->resolve('OC\\Authenticati...')
#27 /var/www/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\Authenticati...')
#28 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(165): OC\ServerContainer->query('OC\\Authenticati...')
#29 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#30 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('OC\\Authenticati...')
#31 /var/www/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\Authenticati...')
#32 /var/www/nextcloud/lib/private/Server.php(372): OC\ServerContainer->query('OC\\Authenticati...')
#33 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))
#34 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('OC\\User\\Session')
#35 /var/www/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\User\\Session')
#36 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(165): OC\ServerContainer->query('OC\\User\\Session')
#37 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#38 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('UserSession')
#39 /var/www/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('UserSession')
#40 /var/www/nextcloud/lib/private/Server.php(1428): OC\ServerContainer->query('UserSession')
#41 /var/www/nextcloud/lib/private/Server.php(694): OC\Server->getUserSession()
#42 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))
#43 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('OC\\App\\AppManag...')
#44 /var/www/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\App\\AppManag...')
#45 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(165): OC\ServerContainer->query('OC\\App\\AppManag...')
#46 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#47 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('AppManager')
#48 /var/www/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('AppManager')
#49 /var/www/nextcloud/lib/private/Server.php(1723): OC\ServerContainer->query('AppManager')
#50 /var/www/nextcloud/lib/private/legacy/app.php(346): OC\Server->getAppManager()
#51 /var/www/nextcloud/lib/private/legacy/app.php(114): OC_App::getEnabledApps()
#52 /var/www/nextcloud/lib/base.php(654): OC_App::loadApps(Array)
#53 /var/www/nextcloud/lib/base.php(1068): OC::init()
#54 /var/www/nextcloud/console.php(46): require_once('/var/www/nextcl...')
#55 /var/www/nextcloud/occ(11): require_once('/var/www/nextcl...')
#56 {main}PHP Fatal error:  Uncaught Doctrine\DBAL\DBALException: Failed to connect to the database: An exception occured in driver: could not find driver in /var/www/nextcloud/lib/private/DB/Connection.php:64
Stack trace:
#0 /var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(429): OC\DB\Connection->connect()
#1 /var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(389): Doctrine\DBAL\Connection->getDatabasePlatformVersion()
#2 /var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(328): Doctrine\DBAL\Connection->detectDatabasePlatform()
#3 /var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(623): Doctrine\DBAL\Connection->getDatabasePlatform()
#4 /var/www/nextcloud/lib/private/DB/Connection.php(151): Doctrine\DBAL\Connection->setTransactionIsolation(2)
#5 /var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php(172): OC\DB\Connection->__construct(Array, Object(Doctrine\DBAL\Driver\PDOMySql\Driver), Object(Doctrine\DBAL\Configura in /var/www/nextcloud/lib/private/DB/Connection.php on line 64
www-data@app-server:~/nextcloud$

I’m not sure if this is a script problem or user error.

When you created the database user what privileges did you create it with?

@Paradox551 I haven’t changed them. On the nc21 install it’s a “nextcloud” posgtres user, on nc15 install it’s also a “nextcloud” maria db user.

What I’m rather thinking about is wether the php modules are the same on both the cli and web SAPI, maybe I need to figure out if the cli SAPI has all the requirements. I don’t know if I should do this via a phpinfo() from the command line and see if the maria db drivers are properly "loaded " ?

Either that or the way nextcloud connects to the database is different when used from command line than when used from WUI ? (unlikely ?)

Still waiting…

White privileges, no just kidding. I don’t know. I created the database like this :

$ createdb -U nextcloud -h localhost nextcloud

By default, the nextcloud database will be owned by the nextcloud user (role?), but I don’t know about the privileges.

I created the nextcloud user with createuser --interactive and answered yes to all questions. So :

  • superuser
  • allowed to create databases
  • allowed to create more new roles

Here’s relevant part of the output of \l if it helps

postgres=# ─\l
                                   List of databases
   Name    |   Owner   | Encoding |   Collate   |    Ctype    |    Access privileges
-----------+-----------+----------+-------------+-------------+-------------------------
 nextcloud | nextcloud | UTF8     | en_US.UTF-8 | en_US.UTF-8 | nextcloud=CTc/nextcloud+
           |           |          |             |             | oc_theboss=c/nextcloud

IIRC, the documentation stipulate that the admin has to create a database user that will be used to create a new database user only. The newly nextcloud installation script created database user will then own the databases and tables created. This was not the case. The created user oc_theboss had only connection privileges to the database but no privileges to any of its tables.

After you enter your root or administrator login for your database, the installer creates a special database user with privileges limited to the Nextcloud database. Then Nextcloud needs only the special Nextcloud database user, and drops the root dB login. This user is named for your Nextcloud admin user, with an oc_ prefix, and then given a random password. The Nextcloud database user and password are written into config.php:

source : Installation wizard — Nextcloud latest Administration Manual latest documentation

I didn’t fix the installer script.

What I did is manually give ownership of the database and all of its tables from the supplied database user (the one created by the administrator and given to the installation script) to the nextcloud created database user (oc_theboss) via the REASSIGN postgres command.

before

nextcloud=# \d
                           List of relations
 Schema |                 Name                 |   Type   |   Owner    
--------+--------------------------------------+----------+------------
 public | oc_accounts                          | table    | nextcloud
 public | oc_accounts_data                     | table    | nextcloud
 public | oc_accounts_data_id_seq              | sequence | nextcloud
 public | oc_activity                          | table    | nextcloud
 public | oc_activity_activity_id_seq          | sequence | nextcloud
 public | oc_activity_mq                       | table    | nextcloud
 public | oc_activity_mq_mail_id_seq           | sequence | nextcloud
 public | oc_addressbookchanges                | table    | nextcloud
 public | oc_addressbookchanges_id_seq         | sequence | nextcloud
 public | oc_addressbooks                      | table    | nextcloud
 public | oc_addressbooks_id_seq               | sequence | nextcloud
 public | oc_appconfig                         | table    | nextcloud
 public | oc_authtoken                         | table    | nextcloud
 public | oc_authtoken_id_seq                  | sequence | nextcloud
 public | oc_bruteforce_attempts               | table    | nextcloud
 public | oc_bruteforce_attempts_id_seq        | sequence | nextcloud
 public | oc_calendar_invitations              | table    | nextcloud
 public | oc_calendar_invitations_id_seq       | sequence | nextcloud
 public | oc_calendar_reminders                | table    | nextcloud
 public | oc_calendar_reminders_id_seq         | sequence | nextcloud
 public | oc_calendar_resources                | table    | nextcloud
 public | oc_calendar_resources_id_seq         | sequence | nextcloud
 public | oc_calendar_resources_md             | table    | nextcloud
 public | oc_calendar_resources_md_id_seq      | sequence | nextcloud
 public | oc_calendar_rooms                    | table    | nextcloud
 public | oc_calendar_rooms_id_seq             | sequence | nextcloud
 public | oc_calendar_rooms_md                 | table    | nextcloud
 public | oc_calendar_rooms_md_id_seq          | sequence | nextcloud
 public | oc_calendarchanges                   | table    | nextcloud
 public | oc_calendarchanges_id_seq            | sequence | nextcloud
 public | oc_calendarobjects                   | table    | nextcloud
 public | oc_calendarobjects_id_seq            | sequence | nextcloud
 public | oc_calendarobjects_props             | table    | nextcloud
 public | oc_calendarobjects_props_id_seq      | sequence | nextcloud
 public | oc_calendars                         | table    | nextcloud
 public | oc_calendars_id_seq                  | sequence | nextcloud
 public | oc_calendarsubscriptions             | table    | nextcloud
 public | oc_calendarsubscriptions_id_seq      | sequence | nextcloud
 public | oc_cards                             | table    | nextcloud
 public | oc_cards_id_seq                      | sequence | nextcloud
 public | oc_cards_properties                  | table    | nextcloud
 public | oc_cards_properties_id_seq           | sequence | nextcloud
 public | oc_collres_accesscache               | table    | nextcloud
 public | oc_collres_collections               | table    | nextcloud
 public | oc_collres_collections_id_seq        | sequence | nextcloud
 public | oc_collres_resources                 | table    | nextcloud
 public | oc_comments                          | table    | nextcloud
 public | oc_comments_id_seq                   | sequence | nextcloud
 public | oc_comments_read_markers             | table    | nextcloud
 public | oc_dav_cal_proxy                     | table    | nextcloud
 public | oc_dav_cal_proxy_id_seq              | sequence | nextcloud
 public | oc_dav_shares                        | table    | nextcloud
 public | oc_dav_shares_id_seq                 | sequence | nextcloud
 public | oc_direct_edit                       | table    | nextcloud
 public | oc_direct_edit_id_seq                | sequence | nextcloud
 public | oc_directlink                        | table    | nextcloud
 public | oc_directlink_id_seq                 | sequence | nextcloud
 public | oc_federated_reshares                | table    | nextcloud
 public | oc_file_locks                        | table    | nextcloud
 public | oc_file_locks_id_seq                 | sequence | nextcloud
 public | oc_filecache                         | table    | nextcloud
 public | oc_filecache_extended                | table    | nextcloud
 public | oc_filecache_fileid_seq              | sequence | nextcloud
 public | oc_files_trash                       | table    | nextcloud
 public | oc_files_trash_auto_id_seq           | sequence | nextcloud
 public | oc_flow_checks                       | table    | nextcloud
 public | oc_flow_checks_id_seq                | sequence | nextcloud
 public | oc_flow_operations                   | table    | nextcloud
 public | oc_flow_operations_id_seq            | sequence | nextcloud
 public | oc_flow_operations_scope             | table    | nextcloud
 public | oc_flow_operations_scope_id_seq      | sequence | nextcloud
 public | oc_group_admin                       | table    | nextcloud
 public | oc_group_user                        | table    | nextcloud
 public | oc_groups                            | table    | nextcloud
 public | oc_jobs                              | table    | nextcloud
 public | oc_jobs_id_seq                       | sequence | nextcloud
 public | oc_login_flow_v2                     | table    | nextcloud
 public | oc_login_flow_v2_id_seq              | sequence | nextcloud
 public | oc_migrations                        | table    | nextcloud
 public | oc_mimetypes                         | table    | nextcloud
 public | oc_mimetypes_id_seq                  | sequence | nextcloud
 public | oc_mounts                            | table    | nextcloud
 public | oc_mounts_id_seq                     | sequence | nextcloud
 public | oc_notifications                     | table    | nextcloud
 public | oc_notifications_notification_id_seq | sequence | nextcloud
 public | oc_notifications_pushtokens          | table    | nextcloud
 public | oc_oauth2_access_tokens              | table    | nextcloud
 public | oc_oauth2_access_tokens_id_seq       | sequence | nextcloud
 public | oc_oauth2_clients                    | table    | nextcloud
 public | oc_oauth2_clients_id_seq             | sequence | nextcloud
 public | oc_preferences                       | table    | nextcloud
 public | oc_privacy_admins                    | table    | nextcloud
 public | oc_privacy_admins_id_seq             | sequence | nextcloud
 public | oc_properties                        | table    | nextcloud
 public | oc_properties_id_seq                 | sequence | nextcloud
 public | oc_recent_contact                    | table    | nextcloud
 public | oc_recent_contact_id_seq             | sequence | nextcloud
 public | oc_schedulingobjects                 | table    | nextcloud
 public | oc_schedulingobjects_id_seq          | sequence | nextcloud
 public | oc_share                             | table    | nextcloud
 public | oc_share_external                    | table    | nextcloud
 public | oc_share_external_id_seq             | sequence | nextcloud
 public | oc_share_id_seq                      | sequence | nextcloud
 public | oc_storages                          | table    | nextcloud
 public | oc_storages_credentials              | table    | nextcloud
 public | oc_storages_credentials_id_seq       | sequence | nextcloud
 public | oc_storages_numeric_id_seq           | sequence | nextcloud
 public | oc_systemtag                         | table    | nextcloud
 public | oc_systemtag_group                   | table    | nextcloud
 public | oc_systemtag_id_seq                  | sequence | nextcloud
 public | oc_systemtag_object_mapping          | table    | nextcloud
 public | oc_text_documents                    | table    | nextcloud
 public | oc_text_sessions                     | table    | nextcloud
 public | oc_text_sessions_id_seq              | sequence | nextcloud
 public | oc_text_steps                        | table    | nextcloud
 public | oc_text_steps_id_seq                 | sequence | nextcloud
 public | oc_trusted_servers                   | table    | nextcloud
 public | oc_trusted_servers_id_seq            | sequence | nextcloud
 public | oc_twofactor_backupcodes             | table    | nextcloud
 public | oc_twofactor_backupcodes_id_seq      | sequence | nextcloud
 public | oc_twofactor_providers               | table    | nextcloud
 public | oc_user_status                       | table    | nextcloud
 public | oc_user_status_id_seq                | sequence | nextcloud
 public | oc_user_transfer_owner               | table    | nextcloud
 public | oc_user_transfer_owner_id_seq        | sequence | nextcloud
 public | oc_users                             | table    | nextcloud
 public | oc_vcategory                         | table    | nextcloud
 public | oc_vcategory_id_seq                  | sequence | nextcloud
 public | oc_vcategory_to_object               | table    | nextcloud
 public | oc_webauthn                          | table    | nextcloud
 public | oc_webauthn_id_seq                   | sequence | nextcloud
 public | oc_whats_new                         | table    | nextcloud
 public | oc_whats_new_id_seq                  | sequence | nextcloud
(133 rows)

After

nextcloud=# REASSIGN OWNED BY nextcloud to oc_theboss;
REASSIGN OWNED
nextcloud=# \d
                           List of relations
 Schema |                 Name                 |   Type   |   Owner    
--------+--------------------------------------+----------+------------
 public | oc_accounts                          | table    | oc_theboss
 public | oc_accounts_data                     | table    | oc_theboss
 public | oc_accounts_data_id_seq              | sequence | oc_theboss
 public | oc_activity                          | table    | oc_theboss
 public | oc_activity_activity_id_seq          | sequence | oc_theboss
 public | oc_activity_mq                       | table    | oc_theboss
 public | oc_activity_mq_mail_id_seq           | sequence | oc_theboss
 public | oc_addressbookchanges                | table    | oc_theboss
 public | oc_addressbookchanges_id_seq         | sequence | oc_theboss
 public | oc_addressbooks                      | table    | oc_theboss
 public | oc_addressbooks_id_seq               | sequence | oc_theboss
 public | oc_appconfig                         | table    | oc_theboss
 public | oc_authtoken                         | table    | oc_theboss
 public | oc_authtoken_id_seq                  | sequence | oc_theboss
 public | oc_bruteforce_attempts               | table    | oc_theboss
 public | oc_bruteforce_attempts_id_seq        | sequence | oc_theboss
 public | oc_calendar_invitations              | table    | oc_theboss
 public | oc_calendar_invitations_id_seq       | sequence | oc_theboss
 public | oc_calendar_reminders                | table    | oc_theboss
 public | oc_calendar_reminders_id_seq         | sequence | oc_theboss
 public | oc_calendar_resources                | table    | oc_theboss
 public | oc_calendar_resources_id_seq         | sequence | oc_theboss
 public | oc_calendar_resources_md             | table    | oc_theboss
 public | oc_calendar_resources_md_id_seq      | sequence | oc_theboss
 public | oc_calendar_rooms                    | table    | oc_theboss
 public | oc_calendar_rooms_id_seq             | sequence | oc_theboss
 public | oc_calendar_rooms_md                 | table    | oc_theboss
 public | oc_calendar_rooms_md_id_seq          | sequence | oc_theboss
 public | oc_calendarchanges                   | table    | oc_theboss
 public | oc_calendarchanges_id_seq            | sequence | oc_theboss
 public | oc_calendarobjects                   | table    | oc_theboss
 public | oc_calendarobjects_id_seq            | sequence | oc_theboss
 public | oc_calendarobjects_props             | table    | oc_theboss
 public | oc_calendarobjects_props_id_seq      | sequence | oc_theboss
 public | oc_calendars                         | table    | oc_theboss
 public | oc_calendars_id_seq                  | sequence | oc_theboss
 public | oc_calendarsubscriptions             | table    | oc_theboss
 public | oc_calendarsubscriptions_id_seq      | sequence | oc_theboss
 public | oc_cards                             | table    | oc_theboss
 public | oc_cards_id_seq                      | sequence | oc_theboss
 public | oc_cards_properties                  | table    | oc_theboss
 public | oc_cards_properties_id_seq           | sequence | oc_theboss
 public | oc_collres_accesscache               | table    | oc_theboss
 public | oc_collres_collections               | table    | oc_theboss
 public | oc_collres_collections_id_seq        | sequence | oc_theboss
 public | oc_collres_resources                 | table    | oc_theboss
 public | oc_comments                          | table    | oc_theboss
 public | oc_comments_id_seq                   | sequence | oc_theboss
 public | oc_comments_read_markers             | table    | oc_theboss
 public | oc_dav_cal_proxy                     | table    | oc_theboss
 public | oc_dav_cal_proxy_id_seq              | sequence | oc_theboss
 public | oc_dav_shares                        | table    | oc_theboss
 public | oc_dav_shares_id_seq                 | sequence | oc_theboss
 public | oc_direct_edit                       | table    | oc_theboss
 public | oc_direct_edit_id_seq                | sequence | oc_theboss
 public | oc_directlink                        | table    | oc_theboss
 public | oc_directlink_id_seq                 | sequence | oc_theboss
 public | oc_federated_reshares                | table    | oc_theboss
 public | oc_file_locks                        | table    | oc_theboss
 public | oc_file_locks_id_seq                 | sequence | oc_theboss
 public | oc_filecache                         | table    | oc_theboss
 public | oc_filecache_extended                | table    | oc_theboss
 public | oc_filecache_fileid_seq              | sequence | oc_theboss
 public | oc_files_trash                       | table    | oc_theboss
 public | oc_files_trash_auto_id_seq           | sequence | oc_theboss
 public | oc_flow_checks                       | table    | oc_theboss
 public | oc_flow_checks_id_seq                | sequence | oc_theboss
 public | oc_flow_operations                   | table    | oc_theboss
 public | oc_flow_operations_id_seq            | sequence | oc_theboss
 public | oc_flow_operations_scope             | table    | oc_theboss
 public | oc_flow_operations_scope_id_seq      | sequence | oc_theboss
 public | oc_group_admin                       | table    | oc_theboss
 public | oc_group_user                        | table    | oc_theboss
 public | oc_groups                            | table    | oc_theboss
 public | oc_jobs                              | table    | oc_theboss
 public | oc_jobs_id_seq                       | sequence | oc_theboss
 public | oc_login_flow_v2                     | table    | oc_theboss
 public | oc_login_flow_v2_id_seq              | sequence | oc_theboss
 public | oc_migrations                        | table    | oc_theboss
 public | oc_mimetypes                         | table    | oc_theboss
 public | oc_mimetypes_id_seq                  | sequence | oc_theboss
 public | oc_mounts                            | table    | oc_theboss
 public | oc_mounts_id_seq                     | sequence | oc_theboss
 public | oc_notifications                     | table    | oc_theboss
 public | oc_notifications_notification_id_seq | sequence | oc_theboss
 public | oc_notifications_pushtokens          | table    | oc_theboss
 public | oc_oauth2_access_tokens              | table    | oc_theboss
 public | oc_oauth2_access_tokens_id_seq       | sequence | oc_theboss
 public | oc_oauth2_clients                    | table    | oc_theboss
 public | oc_oauth2_clients_id_seq             | sequence | oc_theboss
 public | oc_preferences                       | table    | oc_theboss
 public | oc_privacy_admins                    | table    | oc_theboss
 public | oc_privacy_admins_id_seq             | sequence | oc_theboss
 public | oc_properties                        | table    | oc_theboss
 public | oc_properties_id_seq                 | sequence | oc_theboss
 public | oc_recent_contact                    | table    | oc_theboss
 public | oc_recent_contact_id_seq             | sequence | oc_theboss
 public | oc_schedulingobjects                 | table    | oc_theboss
 public | oc_schedulingobjects_id_seq          | sequence | oc_theboss
 public | oc_share                             | table    | oc_theboss
 public | oc_share_external                    | table    | oc_theboss
 public | oc_share_external_id_seq             | sequence | oc_theboss
 public | oc_share_id_seq                      | sequence | oc_theboss
 public | oc_storages                          | table    | oc_theboss
 public | oc_storages_credentials              | table    | oc_theboss
 public | oc_storages_credentials_id_seq       | sequence | oc_theboss
 public | oc_storages_numeric_id_seq           | sequence | oc_theboss
 public | oc_systemtag                         | table    | oc_theboss
 public | oc_systemtag_group                   | table    | oc_theboss
 public | oc_systemtag_id_seq                  | sequence | oc_theboss
 public | oc_systemtag_object_mapping          | table    | oc_theboss
 public | oc_text_documents                    | table    | oc_theboss
 public | oc_text_sessions                     | table    | oc_theboss
 public | oc_text_sessions_id_seq              | sequence | oc_theboss
 public | oc_text_steps                        | table    | oc_theboss
 public | oc_text_steps_id_seq                 | sequence | oc_theboss
 public | oc_trusted_servers                   | table    | oc_theboss
 public | oc_trusted_servers_id_seq            | sequence | oc_theboss
 public | oc_twofactor_backupcodes             | table    | oc_theboss
 public | oc_twofactor_backupcodes_id_seq      | sequence | oc_theboss
 public | oc_twofactor_providers               | table    | oc_theboss
 public | oc_user_status                       | table    | oc_theboss
 public | oc_user_status_id_seq                | sequence | oc_theboss
 public | oc_user_transfer_owner               | table    | oc_theboss
 public | oc_user_transfer_owner_id_seq        | sequence | oc_theboss
 public | oc_users                             | table    | oc_theboss
 public | oc_vcategory                         | table    | oc_theboss
 public | oc_vcategory_id_seq                  | sequence | oc_theboss
 public | oc_vcategory_to_object               | table    | oc_theboss
 public | oc_webauthn                          | table    | oc_theboss
 public | oc_webauthn_id_seq                   | sequence | oc_theboss
 public | oc_whats_new                         | table    | oc_theboss
 public | oc_whats_new_id_seq                  | sequence | oc_theboss
(133 rows)

Now I can run occ without any exceptions.

root#cloud 14:29:48 ~ # su - www-data -s /bin/bash -c "php /var/www/nextcloud/occ"      
Nextcloud 21.0.0

Usage:
  command [options] [arguments]

Options:
[...]
root#cloud 14:29:58 ~ #

Thanks for pointing me in the right direction @Paradox551

2 Likes