Nextcloud version: 15.0.4 (fpm from docker)
Operating system and version: Ubuntu 18.04.2 LTS
Apache or nginx version: nginx/1.15.8 (also from dockerhub, nginx alpine)
PHP version (eg, 7.1): 7.2.15
Postgres version: 10
My setup follows the setup example from this nextcloud dockerhub page: a nginx with the nextcloud fpm version and a postgres instance.
When trying to restore a backup from the healthy nextcloud instance on my home server, I cannot execute any php occ commands in the new nextcloud container. The occ command simply fails.
This is not the first time this error has occurred; I have reproduced it.
Steps to replicate it:
- Create a fresh backup of data, config, themes folder and the database
- move backup to test VM
- restore folders, database (either with or without nextcloud running)
- try and execute
php occ
in the nextcloud container (usingsudo docker-compose exec --user www-data nextcloud php occ
)
The output of my occ command:
An unhandled exception has been thrown:
PDOException: SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "appconfig" does not exist
LINE 1: SELECT * FROM "appconfig"
^ in /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:104
Stack trace:
#0 /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(104): PDO->query('SELECT * FROM "...')
#1 /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(852): Doctrine\DBAL\Driver\PDOConnection->query('SELECT * FROM "...')
#2 /var/www/html/lib/private/DB/Connection.php(195): Doctrine\DBAL\Connection->executeQuery('SELECT * FROM "...', Array, Array, NULL)
#3 /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryBuilder.php(206): OC\DB\Connection->executeQuery('SELECT * FROM "...', Array, Array)
#4 /var/www/html/lib/private/DB/QueryBuilder/QueryBuilder.php(214): Doctrine\DBAL\Query\QueryBuilder->execute()
#5 /var/www/html/lib/private/AppConfig.php(315): OC\DB\QueryBuilder\QueryBuilder->execute()
#6 /var/www/html/lib/private/AppConfig.php(94): OC\AppConfig->loadConfigValues()
#7 /var/www/html/lib/private/AppConfig.php(272): OC\AppConfig->getApps()
#8 /var/www/html/lib/private/legacy/app.php(874): OC\AppConfig->getValues(false, 'installed_versi...')
#9 /var/www/html/lib/private/Server.php(502): OC_App::getAppVersions()
#10 /var/www/html/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))
#11 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('OC\\Memcache\\Fac...')
#12 /var/www/html/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\Memcache\\Fac...')
#13 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(165): OC\ServerContainer->query('OC\\Memcache\\Fac...')
#14 /var/www/html/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#15 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('MemCacheFactory')
#16 /var/www/html/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('MemCacheFactory')
#17 /var/www/html/lib/private/Server.php(1533): OC\ServerContainer->query('MemCacheFactory')
#18 /var/www/html/lib/private/Server.php(697): OC\Server->getMemCacheFactory()
#19 /var/www/html/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))
#20 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('OC\\App\\AppManag...')
#21 /var/www/html/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\App\\AppManag...')
#22 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(165): OC\ServerContainer->query('OC\\App\\AppManag...')
#23 /var/www/html/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#24 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('AppManager')
#25 /var/www/html/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('AppManager')
#26 /var/www/html/lib/private/Server.php(1723): OC\ServerContainer->query('AppManager')
#27 /var/www/html/lib/private/legacy/app.php(342): OC\Server->getAppManager()
#28 /var/www/html/lib/private/legacy/util.php(1482): OC_App::getEnabledApps(false, true)
#29 /var/www/html/lib/public/Util.php(519): OC_Util::needUpgrade(Object(OC\SystemConfig))
#30 /var/www/html/lib/base.php(720): OCP\Util::needUpgrade()
#31 /var/www/html/lib/base.php(1068): OC::init()
#32 /var/www/html/console.php(46): require_once('/var/www/html/l...')
#33 /var/www/html/occ(11): require_once('/var/www/html/c...')
#34 {main}
Next Doctrine\DBAL\Driver\PDOException: SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "appconfig" does not exist
LINE 1: SELECT * FROM "appconfig"
^ in /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:106
Stack trace:
#0 /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(852): Doctrine\DBAL\Driver\PDOConnection->query('SELECT * FROM "...')
#1 /var/www/html/lib/private/DB/Connection.php(195): Doctrine\DBAL\Connection->executeQuery('SELECT * FROM "...', Array, Array, NULL)
#2 /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryBuilder.php(206): OC\DB\Connection->executeQuery('SELECT * FROM "...', Array, Array)
#3 /var/www/html/lib/private/DB/QueryBuilder/QueryBuilder.php(214): Doctrine\DBAL\Query\QueryBuilder->execute()
#4 /var/www/html/lib/private/AppConfig.php(315): OC\DB\QueryBuilder\QueryBuilder->execute()
#5 /var/www/html/lib/private/AppConfig.php(94): OC\AppConfig->loadConfigValues()
#6 /var/www/html/lib/private/AppConfig.php(272): OC\AppConfig->getApps()
#7 /var/www/html/lib/private/legacy/app.php(874): OC\AppConfig->getValues(false, 'installed_versi...')
#8 /var/www/html/lib/private/Server.php(502): OC_App::getAppVersions()
#9 /var/www/html/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))
#10 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('OC\\Memcache\\Fac...')
#11 /var/www/html/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\Memcache\\Fac...')
#12 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(165): OC\ServerContainer->query('OC\\Memcache\\Fac...')
#13 /var/www/html/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#14 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('MemCacheFactory')
#15 /var/www/html/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('MemCacheFactory')
#16 /var/www/html/lib/private/Server.php(1533): OC\ServerContainer->query('MemCacheFactory')
#17 /var/www/html/lib/private/Server.php(697): OC\Server->getMemCacheFactory()
#18 /var/www/html/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))
#19 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('OC\\App\\AppManag...')
#20 /var/www/html/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\App\\AppManag...')
#21 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(165): OC\ServerContainer->query('OC\\App\\AppManag...')
#22 /var/www/html/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#23 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('AppManager')
#24 /var/www/html/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('AppManager')
#25 /var/www/html/lib/private/Server.php(1723): OC\ServerContainer->query('AppManager')
#26 /var/www/html/lib/private/legacy/app.php(342): OC\Server->getAppManager()
#27 /var/www/html/lib/private/legacy/util.php(1482): OC_App::getEnabledApps(false, true)
#28 /var/www/html/lib/public/Util.php(519): OC_Util::needUpgrade(Object(OC\SystemConfig))
#29 /var/www/html/lib/base.php(720): OCP\Util::needUpgrade()
#30 /var/www/html/lib/base.php(1068): OC::init()
#31 /var/www/html/console.php(46): require_once('/var/www/html/l...')
#32 /var/www/html/occ(11): require_once('/var/www/html/c...')
#33 {main}
Next Doctrine\DBAL\Exception\TableNotFoundException: An exception occurred while executing 'SELECT * FROM "appconfig"':
SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "appconfig" does not exist
LINE 1: SELECT * FROM "appconfig"
^ in /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractPostgreSQLDriver.php:76
Stack trace:
#0 /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php(128): Doctrine\DBAL\Driver\AbstractPostgreSQLDriver->convertException('An exception oc...', Object(Doctrine\DBAL\Driver\PDOException))
#1 /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(855): Doctrine\DBAL\DBALException::driverExceptionDuringQuery(Object(Doctrine\DBAL\Driver\PDOPgSql\Driver), Object(Doctrine\DBAL\Driver\PDOException), 'SELECT * FROM "...', Array)
#2 /var/www/html/lib/private/DB/Connection.php(195): Doctrine\DBAL\Connection->executeQuery('SELECT * FROM "...', Array, Array, NULL)
#3 /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryBuilder.php(206): OC\DB\Connection->executeQuery('SELECT * FROM "...', Array, Array)
#4 /var/www/html/lib/private/DB/QueryBuilder/QueryBuilder.php(214): Doctrine\DBAL\Query\QueryBuilder->execute()
#5 /var/www/html/lib/private/AppConfig.php(315): OC\DB\QueryBuilder\QueryBuilder->execute()
#6 /var/www/html/lib/private/AppConfig.php(94): OC\AppConfig->loadConfigValues()
#7 /var/www/html/lib/private/AppConfig.php(272): OC\AppConfig->getApps()
#8 /var/www/html/lib/private/legacy/app.php(874): OC\AppConfig->getValues(false, 'installed_versi...')
#9 /var/www/html/lib/private/Server.php(502): OC_App::getAppVersions()
#10 /var/www/html/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))
#11 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('OC\\Memcache\\Fac...')
#12 /var/www/html/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\Memcache\\Fac...')
#13 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(165): OC\ServerContainer->query('OC\\Memcache\\Fac...')
#14 /var/www/html/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#15 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('MemCacheFactory')
#16 /var/www/html/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('MemCacheFactory')
#17 /var/www/html/lib/private/Server.php(1533): OC\ServerContainer->query('MemCacheFactory')
#18 /var/www/html/lib/private/Server.php(697): OC\Server->getMemCacheFactory()
#19 /var/www/html/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))
#20 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('OC\\App\\AppManag...')
#21 /var/www/html/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\App\\AppManag...')
#22 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(165): OC\ServerContainer->query('OC\\App\\AppManag...')
#23 /var/www/html/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#24 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('AppManager')
#25 /var/www/html/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('AppManager')
#26 /var/www/html/lib/private/Server.php(1723): OC\ServerContainer->query('AppManager')
#27 /var/www/html/lib/private/legacy/app.php(342): OC\Server->getAppManager()
#28 /var/www/html/lib/private/legacy/util.php(1482): OC_App::getEnabledApps(false, true)
#29 /var/www/html/lib/public/Util.php(519): OC_Util::needUpgrade(Object(OC\SystemConfig))
#30 /var/www/html/lib/base.php(720): OCP\Util::needUpgrade()
#31 /var/www/html/lib/base.php(1068): OC::init()
#32 /var/www/html/console.php(46): require_once('/var/www/html/l...')
#33 /var/www/html/occ(11): require_once('/var/www/html/c...')
My 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' => '',
'passwordsalt' => '',
'secret' => '',
'trusted_domains' =>
array (
0 => 'local-name:44444',
),
'datadirectory' => '/var/www/html/data',
'overwrite.cli.url' => '',
'dbtype' => 'pgsql',
'version' => '15.0.4.0',
'dbname' => 'correct db name',
'dbhost' => 'name of the postgres container - reachable via docker DNS',
'dbport' => '',
'dbtableprefix' => '',
'dbuser' => 'correct user',
'dbpassword' => 'correct password',
'installed' => true,
'maintenance' => true,
'data-fingerprint' => '1ec2f2b9b986651939c4e28c8342efd4',
'mail_smtpmode' => 'smtp',
'mail_smtpauthtype' => 'LOGIN',
'loglevel' => 2,
);
Output of the postgres container:
postgres_1 | 2019-02-18 22:09:06.981 UTC [28] ERROR: relation "appconfig" does not exist at character 15
postgres_1 | 2019-02-18 22:09:06.981 UTC [28] STATEMENT: SELECT * FROM "appconfig"
postgres_1 | 2019-02-18 22:09:07.006 UTC [28] ERROR: relation "appconfig" does not exist at character 15
postgres_1 | 2019-02-18 22:09:07.006 UTC [28] STATEMENT: SELECT * FROM "appconfig"
However, when I connect to the postgres server as the nextcloud user, I can see that the appconfig relation does indeed exist:
nextcloud=> SELECT * FROM pg_catalog.pg_tables;
schemaname | tablename | tableowner | tablespace | hasindexes | hasrules | hastriggers | rowsecurity
--------------------+--------------------------+------------+------------+------------+----------+-------------+-------------
public | accounts | nextcloud | | t | f | f | f
public | activity | nextcloud | | t | f | f | f
public | appconfig | nextcloud | | t | f | f | f
public | activity_mq | nextcloud | | t | f | f | f
public | addressbookchanges | nextcloud | | t | f | f | f
public | addressbooks | nextcloud | | t | f | f | f
pg_catalog | pg_statistic | arne | | t | f | f | f
pg_catalog | pg_type | arne | | t | f | f | f
public | authtoken | nextcloud | | t | f | f | f
public | bruteforce_attempts | nextcloud | | t | f | f | f
etc.
It seems to me that my configuration might be wrong somehow for the occ command to find the table; however, I cannot for the life of me figure out what is wrong, especially since I followed the backup and restore guide. Trying to bring nextcloud into maintenance mode before restoring the db also fails, with occ simply proclaiming that the command maintenance:mode
does not exist.