OCC Error "could not find driver in /httpdocs/nextcloud/lib/private/DB/Connection.php:64"

Nextcloud version (15.0.4):
Operating system and version (Netcup Webhosting):
PHP version (7.2.15):

Hi!
My Nextcloud webpage and program works as expected. But I have some problems with locked files, so I want to change my database from sqlite to mysql. To convert the database I need occ but when I try to run

php occ

I get an error:

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 /httpdocs/nextcloud/lib/private/DB/Connection.php:64
Stack trace:
#0 /httpdocs/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(992): OC\DB\Connection->connect()
#1 /httpdocs/nextcloud/lib/private/DB/Connection.php(216): Doctrine\DBAL\Connection->executeUpdate('PRAGMA read_unc...', Array, Array)
#2 /httpdocs/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(623): OC\DB\Connection->executeUpdate('PRAGMA read_unc...')
#3 /httpdocs/nextcloud/lib/private/DB/Connection.php(151): Doctrine\DBAL\Connection->setTransactionIsolation(2)
#4 /httpdocs/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php(172): OC\DB\Connection->__construct(Array, Object(Doctrine\DBAL\Driver\PDOSqlite\Driver), Object(Doctrine\DBAL\Configuration), Object(Doctrine\Common\EventManager))
#5 /httpdocs/nextcloud/lib/private/DB/ConnectionFactory.php(158): Doctrine\DBAL\DriverManager::getConnection(Array, Object(Doctrine\DBAL\Configuration), Object(Doctrine\Common\EventManager))
#6 /httpdocs/nextcloud/lib/private/Server.php(641): OC\DB\ConnectionFactory->getConnection('sqlite3', Array)
#7 /httpdocs/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))
#8 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('OCP\\IDBConnecti...')
#9 /httpdocs/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OCP\\IDBConnecti...')
#10 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(165): OC\ServerContainer->query('OCP\\IDBConnecti...')
#11 /httpdocs/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#12 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('DatabaseConnect...')
#13 /httpdocs/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('DatabaseConnect...')
#14 /httpdocs/nextcloud/lib/private/Server.php(1552): OC\ServerContainer->query('DatabaseConnect...')
#15 /httpdocs/nextcloud/lib/private/Server.php(360): OC\Server->getDatabaseConnection()
#16 /httpdocs/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))
#17 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('OC\\Authenticati...')
#18 /httpdocs/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\Authenticati...')
#19 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(68): OC\ServerContainer->query('OC\\Authenticati...')
#20 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(98): OC\AppFramework\Utility\SimpleContainer->buildClass(Object(ReflectionClass))
#21 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(119): OC\AppFramework\Utility\SimpleContainer->resolve('OC\\Authenticati...')
#22 /httpdocs/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\Authenticati...')
#23 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(68): OC\ServerContainer->query('OC\\Authenticati...')
#24 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(98): OC\AppFramework\Utility\SimpleContainer->buildClass(Object(ReflectionClass))
#25 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(119): OC\AppFramework\Utility\SimpleContainer->resolve('OC\\Authenticati...')
#26 /httpdocs/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\Authenticati...')
#27 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(165): OC\ServerContainer->query('OC\\Authenticati...')
#28 /httpdocs/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#29 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('OC\\Authenticati...')
#30 /httpdocs/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\Authenticati...')
#31 /httpdocs/nextcloud/lib/private/Server.php(372): OC\ServerContainer->query('OC\\Authenticati...')
#32 /httpdocs/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))
#33 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('OC\\User\\Session')
#34 /httpdocs/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\User\\Session')
#35 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(165): OC\ServerContainer->query('OC\\User\\Session')
#36 /httpdocs/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#37 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('UserSession')
#38 /httpdocs/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('UserSession')
#39 /httpdocs/nextcloud/lib/private/Server.php(1428): OC\ServerContainer->query('UserSession')
#40 /httpdocs/nextcloud/lib/private/Server.php(694): OC\Server->getUserSession()
#41 /httpdocs/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\Server->OC\{closure}(Object(OC\Server))
#42 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('OC\\App\\AppManag...')
#43 /httpdocs/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('OC\\App\\AppManag...')
#44 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(165): OC\ServerContainer->query('OC\\App\\AppManag...')
#45 /httpdocs/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(114): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(OC\Server))
#46 /httpdocs/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(117): Pimple\Container->offsetGet('AppManager')
#47 /httpdocs/nextcloud/lib/private/ServerContainer.php(132): OC\AppFramework\Utility\SimpleContainer->query('AppManager')
#48 /httpdocs/nextcloud/lib/private/Server.php(1723): OC\ServerContainer->query('AppManager')
#49 /httpdocs/nextcloud/lib/private/legacy/app.php(342): OC\Server->getAppManager()
#50 /httpdocs/nextcloud/lib/private/legacy/app.php(113): OC_App::getEnabledApps()
#51 /httpdocs/nextcloud/lib/base.php(654): OC_App::loadApps(Array)
#52 /httpdocs/nextcloud/lib/base.php(1068): OC::init()
#53 /httpdocs/nextcloud/console.php(46): require_once('/httpdocs/nextc...')
#54 /httpdocs/nextcloud/occ(11): require_once('/httpdocs/nextc...')

I already had this error with Nextcloud 13 and Nextcloud 14.

I checked with

php -m

if sqlite is installed and it is:

[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
imagick
imap
intl
ionCube Loader
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcre
PDO
pdo_mysql
Phar
posix
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
zip
zlib

[Zend Modules]
the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured)

Different threads suggest trying it with older php-versions. With Nextcloud 13 I tried to run occ with php5.6

/usr/local/php56/bin/php occ

but I got the same error. Nextcloud 15 doesnt even support php5.6. So I tried with PHP7.0 and PHP 7.1 but still the same error.

The output of Nextcloud log lists some locked files (one reason I want to change to mysql) and many of this

is_readable(): open_basedir restriction in effect. File(/proc/meminfo) is not within the allowed path(s): (/var/www/vhosts/***.netcup.net/httpdocs/nextcloud/:/tmp/:/var/lib/php5/sessions:/var/www/vhosts/***.netcup.net/tmp) at /var/www/vhosts/***.netcup.net/httpdocs/nextcloud/apps/serverinfo/lib/SystemStatistics.php#97

BUT none of them at same time when I try to use occ.

The output of your config.php file in /path/to/nextcloud (make sure you remove any identifiable information!):

$CONFIG = array (
  'instanceid' => '***',
  'passwordsalt' => '***',
  'secret' => '***',
  'trusted_domains' =>
  array (
    0 => '***',
    1 => '***',
  ),
  'datadirectory' => ((php_sapi_name() != 'cli') ? '/var/www/vhosts/***.netcup.net' : '') . '/httpdocs/nextcloud/data',
  'overwrite.cli.url' => '***',
  'dbtype' => 'sqlite3',
  'version' => '15.0.4.0',
  'installed' => true,
  'updater.release.channel' => 'stable',
  'log_type' => 'file',
  'logfile' => '/var/www/vhosts/***.netcup.net/httpdocs/nextcloud/log/nextcloud.log',
  'mail_domain' => '***.de',
  'mail_smtpmode' => 'smtp',
  'mail_smtpauthtype' => 'LOGIN',
  'mail_from_address' => 'nextcloud',
  'filelocking.enabled' => 'false',
  'maintenance' => false,
  'theme' => '',
  'loglevel' => 2,
  'updater.secret' => '***',
  'mail_smtphost' => 'mxf9a9.netcup.net',
  'mail_sendmailmode' => 'smtp',
  'mail_smtpauth' => 1,
  'mail_smtpname' => '***',
  'mail_smtppassword' => '***',
);

As you can see I tried to change the datadirectory which is needed because of my hoster (as I found here (german) https://forum.netcup.de/anwendung/sonstige-anwendungen/p72720-owncloud-console-occ-funktioniert-nur-nach-config-änderung-und-legt-weboberfläche-lahm/#post72720). I tried the normal configuration without success too.
I have a second nextcloud 15.0.4 installed on the same server with a different URL and in a different subfolder. occ didn’t work there too until I changed the datadirectory-setting.

It would be great If someone has a good hint!
Julian

Does noone have a clue?

I got the hint to use php7.2 occ, or for maintenance

sudo -u www-data php7.2 /var/www/nextcloud/occ maintenance:mode --on

Sorry, don’t have the source for this hint anymore…

Thank you for your reply!

I only have a hosted webserver, so I can’t use

sudo -u www-data

But my second installed Nextcloud (with MySQL on the same server) works without sudo -u www-data. Also i can’t directly use the command php7.2. Instead I tried

/user/local/php72/bin/php occ maintenance:mode --on

which should be the same.

I also tried other versions 7.x but none of them work. They error with the same message like before!

An unhandled exception has been thrown:
Doctrine\DBAL\DBALException: Failed to connect to the database: An exception occ                                   ured in driver: could not find driver in /httpdocs/nextcloud/lib/private/DB/Conn                                   ection.php:64

And PHP 5.6 is too old for this nextcloud-version:

This version of Nextcloud requires at least PHP 7.0<br/>You are currently running 5.6.38. Please update your PHP ve

So thanks for your try!

Finally I found the problem and a solution. The problem was, that my webhosting provider loads different php extensions in browser than in console. The driver pdo_sqlite was missing in console-php. Because I can’t enable php extensions by myself I used the app OCC Web to convert the database type.

Because the prompt “Continue with this conversion?” fails in OCC Web I simply disabled this prompt in the ConvertType.php as described here: Converting DB Type with single command

My database was that big that php ran out of time while converting, so I disabled in the ConvertType.php the conversion of some tables and convert them manually.

This issue can be closed than :slight_smile:

1 Like