Failed to connect to the database after after data directory move

After i moved nextcloud data directory to an hdd correctly (all permissions should be right and datadirectory changed in config.php), when i go to the web application i get an internal server error message.

When i try to run occ i get this message:

sudo -u www-data php occ

An unhandled exception has been thrown:

Doctrine\DBAL\DBALException: Failed to connect to the database: An exception occurred while executing 'PRAGMA journal_mode = WAL':

SQLSTATE[HY000]: General error: 8 attempt to write a readonly database in /var/www/html/nextcloud/lib/private/DB/Connection.php:64

Stack trace:

#0 /var/www/html/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(1040): OC\DB\Connection->connect()

#1 /var/www/html/nextcloud/lib/private/DB/Connection.php(216): Doctrine\DBAL\Connection->executeUpdate('PRAGMA read_unc...', Array, Array)

#2 /var/www/html/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(683): OC\DB\Connection->executeUpdate('PRAGMA read_unc...')

#3 /var/www/html/nextcloud/lib/private/DB/Connection.php(151): Doctrine\DBAL\Connection->setTransactionIsolation(2)

#4 /var/www/html/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php(195): OC\DB\Connection->__construct(Array, Object(Doctrine\DBAL\Driver\PDOSqlite\Driver), Object(Doctrine\DBAL\Configuration), Object(Doctrine\Common\EventManager))

#5 /var/www/html/nextcloud/lib/private/DB/ConnectionFactory.php(156): Doctrine\DBAL\DriverManager::getConnection(Array, Object(Doctrine\DBAL\Configuration), Object(Doctrine\Common\EventManager))

#6 /var/www/html/nextcloud/lib/private/Server.php(635): OC\DB\ConnectionFactory->getConnection('sqlite3', Array)

#7 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))

#8 /var/www/html/nextcloud/lib/private/ServerContainer.php(120): Pimple\Container->offsetGet('OCP\\IDBConnecti...')

#9 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(161): OC\ServerContainer->query('OCP\\IDBConnecti...')

#10 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))

#11 /var/www/html/nextcloud/lib/private/ServerContainer.php(120): Pimple\Container->offsetGet('DatabaseConnect...')

#12 /var/www/html/nextcloud/lib/private/Server.php(1554): OC\ServerContainer->query('DatabaseConnect...')

#13 /var/www/html/nextcloud/lib/private/Server.php(362): OC\Server->getDatabaseConnection()

#14 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))

#15 /var/www/html/nextcloud/lib/private/ServerContainer.php(120): Pimple\Container->offsetGet('OC\\Authenticati...')

#16 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(69): OC\ServerContainer->query('OC\\Authenticati...', true)

#17 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(99): OC\AppFramework\Utility\SimpleContainer->buildClass(Object(ReflectionClass))

#18 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(114): OC\AppFramework\Utility\SimpleContainer->resolve('OC\\Authenticati...')

#19 /var/www/html/nextcloud/lib/private/ServerContainer.php(145): OC\AppFramework\Utility\SimpleContainer->query('OC\\Authenticati...', true)

#20 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(69): OC\ServerContainer->query('OC\\Authenticati...', true)

#21 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(99): OC\AppFramework\Utility\SimpleContainer->buildClass(Object(ReflectionClass))

#22 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(114): OC\AppFramework\Utility\SimpleContainer->resolve('OC\\Authenticati...')

#23 /var/www/html/nextcloud/lib/private/ServerContainer.php(145): OC\AppFramework\Utility\SimpleContainer->query('OC\\Authenticati...', true)

#24 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(161): OC\ServerContainer->query('OC\\Authenticati...')

#25 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))

#26 /var/www/html/nextcloud/lib/private/ServerContainer.php(120): Pimple\Container->offsetGet('OC\\Authenticati...')

#27 /var/www/html/nextcloud/lib/private/Server.php(374): OC\ServerContainer->query('OC\\Authenticati...')

#28 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))

#29 /var/www/html/nextcloud/lib/private/ServerContainer.php(120): Pimple\Container->offsetGet('OC\\User\\Session')

#30 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(161): OC\ServerContainer->query('OC\\User\\Session')

#31 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))

#32 /var/www/html/nextcloud/lib/private/ServerContainer.php(120): Pimple\Container->offsetGet('UserSession')

#33 /var/www/html/nextcloud/lib/private/Server.php(1430): OC\ServerContainer->query('UserSession')

#34 /var/www/html/nextcloud/lib/private/Server.php(688): OC\Server->getUserSession()

#35 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))

#36 /var/www/html/nextcloud/lib/private/ServerContainer.php(120): Pimple\Container->offsetGet('OC\\App\\AppManag...')

#37 /var/www/html/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(161): OC\ServerContainer->query('OC\\App\\AppManag...')

#38 /var/www/html/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))

#39 /var/www/html/nextcloud/lib/private/ServerContainer.php(120): Pimple\Container->offsetGet('AppManager')

#40 /var/www/html/nextcloud/lib/private/Server.php(1725): OC\ServerContainer->query('AppManager')

#41 /var/www/html/nextcloud/lib/private/legacy/app.php(346): OC\Server->getAppManager()

#42 /var/www/html/nextcloud/lib/private/legacy/app.php(114): OC_App::getEnabledApps()

#43 /var/www/html/nextcloud/lib/base.php(640): OC_App::loadApps(Array)

#44 /var/www/html/nextcloud/lib/base.php(1078): OC::init()

#45 /var/www/html/nextcloud/console.php(46): require_once('/var/www/html/n...')

#46 /var/www/html/nextcloud/occ(11): require_once('/var/www/html/n...')

#47 {main}

And config.php looks like this:

<?php
$CONFIG = array (
  'instanceid' => 'id',
  'passwordsalt' => 'pass',
  'secret' => 'secret',
  'trusted_domains' => 
  array (
    0 => '168.168.3.3',
  ),
  'datadirectory' => '/mnt/drive/data',
  'dbtype' => 'sqlite3',
  'version' => '17.0.2.1',
  'overwrite.cli.url' => '168.168.3.3/nextcloud',
  'installed' => true,
  'maintenance' => false,
);

What could be the problem?

Nextcloud: 17.02.1
Operating system: Ubuntu 19.10.2
Apache: 2.4.41
PHP: 7.3.11

Hi zapper,

as you are using sqlite as your database, I guess the sqlite database file was in the data directory as well. Have a look whether this file has the right ownership (should be the webserver user like www-data, apache, or whatever your webserver user is).

If you have SSH access, you could also execute the following command and show us the output:

ls -lah /mnt/drive/data/

Thanks for help and for the fast response.

This is what i get from running that command:

sudo ls -lah /mnt/drive/data/

total 617K
drwxr-xr-x 1 root     root      592 Jan 17 13:25 .
drwxrwx--- 1 www-data www-data  24K Jan 17 13:25 ..
drwxrwxrwx 1 www-data www-data    0 Jan 17 12:04 admin
drwxrwxrwx 1 www-data www-data 4.0K Jan 16 15:19 appdata_<id>
drwxrwxrwx 1 www-data www-data    0 Jan 16 06:00 files_external
-rwxrwxrwx 1 www-data www-data    0 Jan 16 05:48 index.html
-rw-r----- 1 www-data www-data 584K Jan 17 13:10 nextcloud.log
-rwxrwxrwx 1 www-data www-data 4.0K Jan 17 12:38 owncloud.db

I’m new to nextcloud and I don’t know anything about databases so I’m not sure if the file is there…

To be honest, I never had a SQlite installation but I am guessing that the owncloud.db is the SQlite database. If that’s the case, the permissions look fine to me.

I completly reinstalled nextcloud (this time MariaDB as database), moved the datadirectory and now it is working! But I still don’t know what was the issue with sqlite3…

Anyway, thanks for help @CFelix!