Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PDOException::("could not find driver") - Dockerless install and config #1

Open
franciscohanna92 opened this issue Mar 11, 2019 · 1 comment

Comments

@franciscohanna92
Copy link

Hi there!

I've the following .env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=root
DB_PASSWORD=secret

I'm trying to run the dockerless version. I've followed this steps but when I run:

php artisan migrate --database=system

I get the followin exception (verbose):

 Illuminate\Database\QueryException  : could not find driver (SQL: select * from information_schema.tables where table_schema = public and table_name = migrations)

  at /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664
    660|         // If an exception occurs when attempting to run a query, we'll format the error
    661|         // message to include the bindings with SQL, which will make this exception a
    662|         // lot more helpful to the developer instead of just the database's errors.
    663|         catch (Exception $e) {
  > 664|             throw new QueryException(
    665|                 $query, $this->prepareBindings($bindings), $e
    666|             );
    667|         }
    668| 

  Exception trace:

  1   Doctrine\DBAL\Driver\PDOException::("could not find driver")
      /var/www/multi-tenancy-voyager/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:31

  2   PDOException::("could not find driver")
      /var/www/multi-tenancy-voyager/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:27

  3   PDO::__construct("pgsql:host=127.0.0.1;dbname=default;port=3306;sslmode=prefer", "root", "secret", [])
      /var/www/multi-tenancy-voyager/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:27

  4   Doctrine\DBAL\Driver\PDOConnection::__construct("pgsql:host=127.0.0.1;dbname=default;port=3306;sslmode=prefer", "root", "secret", [])
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:67

  5   Illuminate\Database\Connectors\Connector::createPdoConnection("pgsql:host=127.0.0.1;dbname=default;port=3306;sslmode=prefer", "root", "secret", [])
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:46

  6   Illuminate\Database\Connectors\Connector::createConnection("pgsql:host=127.0.0.1;dbname=default;port=3306;sslmode=prefer", [])
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php:33

  7   Illuminate\Database\Connectors\PostgresConnector::connect()
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php:182

  8   Illuminate\Database\Connectors\ConnectionFactory::Illuminate\Database\Connectors\{closure}()
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Connection.php:918

  9   call_user_func(Object(Closure))
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Connection.php:918

  10  Illuminate\Database\Connection::getPdo()
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Connection.php:943

  11  Illuminate\Database\Connection::getReadPdo()
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Connection.php:399

  12  Illuminate\Database\Connection::getPdoForSelect()
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Connection.php:325

  13  Illuminate\Database\Connection::Illuminate\Database\{closure}("select * from information_schema.tables where table_schema = ? and table_name = ?")
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Connection.php:657

  14  Illuminate\Database\Connection::runQueryCallback("select * from information_schema.tables where table_schema = ? and table_name = ?", Object(Closure))
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Connection.php:624

  15  Illuminate\Database\Connection::run("select * from information_schema.tables where table_schema = ? and table_name = ?", Object(Closure))
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Connection.php:333

  16  Illuminate\Database\Connection::select("select * from information_schema.tables where table_schema = ? and table_name = ?")
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Schema/PostgresBuilder.php:20

  17  Illuminate\Database\Schema\PostgresBuilder::hasTable("migrations")
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php:169

  18  Illuminate\Database\Migrations\DatabaseMigrationRepository::repositoryExists()
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:556

  19  Illuminate\Database\Migrations\Migrator::repositoryExists()
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:91

  20  Illuminate\Database\Console\Migrations\MigrateCommand::prepareDatabase()
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:63

  21  Illuminate\Database\Console\Migrations\MigrateCommand::handle()
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:29

  22  call_user_func_array([])
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:29

  23  Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:87

  24  Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Object(Closure))
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:31

  25  Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), [])
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Container/Container.php:572

  26  Illuminate\Container\Container::call()
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Console/Command.php:183

  27  Illuminate\Console\Command::execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
      /var/www/multi-tenancy-voyager/vendor/symfony/console/Command/Command.php:255

  28  Symfony\Component\Console\Command\Command::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Console/Command.php:170

  29  Illuminate\Console\Command::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /var/www/multi-tenancy-voyager/vendor/symfony/console/Application.php:901

  30  Symfony\Component\Console\Application::doRunCommand(Object(Illuminate\Database\Console\Migrations\MigrateCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /var/www/multi-tenancy-voyager/vendor/symfony/console/Application.php:262

  31  Symfony\Component\Console\Application::doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /var/www/multi-tenancy-voyager/vendor/symfony/console/Application.php:145

  32  Symfony\Component\Console\Application::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Console/Application.php:89

  33  Illuminate\Console\Application::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:122

  34  Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /var/www/multi-tenancy-voyager/artisan:37

It seems that it tries to use de Postgress driver instead of MySQL, because of the line:

  6   Illuminate\Database\Connectors\Connector::createConnection("pgsql:host=127.0.0.1;dbname=default;port=3306;sslmode=prefer", [])
      /var/www/multi-tenancy-voyager/vendor/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php:33
@gruz
Copy link
Owner

gruz commented Mar 11, 2019

Hi.

The code is created with Postgres in mind. So you need some manual steps for MySQL.

DB_CONNECTION=mysql in .env should be DB_CONNECTION=system
and in
config/database.php change mysql connection to system, and currentl system connection back to postgres

        'system' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
        ],

        'postgres' => [
            'driver' => 'pgsql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
            'schema' => 'public',
            'sslmode' => 'prefer',
        ],

And I think you should also change password generator for MySQL manually

So in ./config/tenancy.php set

'password-generator' => App\DatabasePasswordGenerator::class,

Or via bash script

    sed -i "s/'password-generator' => Hyn\\\Tenancy\\\Generators\\\Database\\\DefaultPasswordGenerator::class,/'password-generator' => App\\\DatabasePasswordGenerator::class,/g" ./config/tenancy.php

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants