Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
14
respostas

Dúvida no Ex. 5 da Aula 2 - MVC e conexão com banco de dados

Erro PDOException in Connector.php line 55: could not find driver Não consigo solucionar, meu mysql está funcionando beleza, configurei o db como no video mas não funciona ele me retorna isso:

in Connector.php line 55
at PDO->__construct('mysql:host=127.0.0.1;dbname=homestead', 'homestead', 'secret', array('0', '2', '0', false, false)) in Connector.php line 55
at Connector->createConnection('mysql:host=127.0.0.1;dbname=homestead', array('driver' => 'mysql', 'host' => '127.0.0.1', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, 'name' => 'mysql'), array('0', '2', '0', false, false)) in MySqlConnector.php line 24
at MySqlConnector->connect(array('driver' => 'mysql', 'host' => '127.0.0.1', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, 'name' => 'mysql')) in ConnectionFactory.php line 61
at ConnectionFactory->Illuminate\Database\Connectors\{closure}()
at call_user_func(object(Closure)) in Connection.php line 864
at Connection->getPdo() in Connection.php line 732
at Connection->reconnectIfMissingConnection() in Connection.php line 621
at Connection->run('select * from produtos', array(), object(Closure)) in Connection.php line 342
at Connection->select('select * from produtos')
at call_user_func_array(array(object(MySqlConnection), 'select'), array('select * from produtos')) in DatabaseManager.php line 317
at DatabaseManager->__call('select', array('select * from produtos')) in Facade.php line 218
at DatabaseManager->select('select * from produtos') in Facade.php line 218
at Facade::__callStatic('select', array('select * from produtos')) in ProdutoController.php line 11
at DB::select('select * from produtos') in ProdutoController.php line 11
at ProdutoController->lista()
at call_user_func_array(array(object(ProdutoController), 'lista'), array()) in Controller.php line 76
at Controller->callAction('lista', array()) in ControllerDispatcher.php line 146
at ControllerDispatcher->call(object(ProdutoController), object(Route), 'lista') in ControllerDispatcher.php line 94
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 96
at ControllerDispatcher->callWithinStack(object(ProdutoController), object(Route), object(Request), 'lista') in ControllerDispatcher.php line 54
at ControllerDispatcher->dispatch(object(Route), object(Request), 'estoque\Http\Controllers\ProdutoController', 'lista') in Route.php line 174
at Route->runController(object(Request)) in Route.php line 140
at Route->run(object(Request)) in Router.php line 724
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Router.php line 726
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 699
at Router->dispatchToRoute(object(Request)) in Router.php line 675
at Router->dispatch(object(Request)) in Kernel.php line 246
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 132
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
at Kernel->handle(object(Request)) in index.php line 54
at require_once('/home/douglas/estoque/public/index.php') in server.php line 21

O meu controller

<?php namespace estoque\Http\Controllers;

use Illuminate\Support\Facades\DB;
/**
 *
 */
class ProdutoController extends Controller {
    public function lista() {

        $html = '<h1>Listagem de Produtos</h1>'; 
        $produtos = DB::select('select * from produtos');
        foreach ($produtos as $produto) {
            $html .= "</br>Nome: ". $produto->nome;
        }
        return $html;
    }
}
?>

O database.php

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | PDO Fetch Style
    |--------------------------------------------------------------------------
    |
    | By default, database results will be returned as instances of the PHP
    | stdClass object; however, you may desire to retrieve records in an
    | array format for simplicity. Here you can tweak the fetch style.
    |
     */

    'fetch' => PDO::FETCH_CLASS,

    /*
    |--------------------------------------------------------------------------
    | Default Database Connection Name
    |--------------------------------------------------------------------------
    |
    | Here you may specify which of the database connections below you wish
    | to use as your default connection for all database work. Of course
    | you may use many connections at once using the Database library.
    |
     */

    'default' => 'mysql',

    /*
    |--------------------------------------------------------------------------
    | Database Connections
    |--------------------------------------------------------------------------
    |
    | Here are each of the database connections setup for your application.
    | Of course, examples of configuring each database platform that is
    | supported by Laravel is shown below to make development simple.
    |
    |
    | All database work in Laravel is done through the PHP PDO facilities
    | so make sure you have the driver for your particular database of
    | choice installed on your machine before you begin development.
    |
     */

    'connections' => [

        'sqlite'    => [
            'driver'   => 'sqlite',
            'database' => database_path('database.sqlite'),
            'prefix'   => '',
        ],

        'mysql'      => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'estoque_laravel'),
            'username'  => env('DB_USERNAME', 'root'),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
            'engine'    => null,
        ],

        'pgsql'     => [
            'driver'   => 'pgsql',
            'host'     => env('DB_HOST', 'localhost'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset'  => 'utf8',
            'prefix'   => '',
            'schema'   => 'public',
        ],

        'sqlsrv'    => [
            'driver'   => 'sqlsrv',
            'host'     => env('DB_HOST', 'localhost'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset'  => 'utf8',
            'prefix'   => '',
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Migration Repository Table
    |--------------------------------------------------------------------------
    |
    | This table keeps track of all the migrations that have already run for
    | your application. Using this information, we can determine which of
    | the migrations on disk haven't actually been run in the database.
    |
     */

    'migrations' => 'migrations',

    /*
    |--------------------------------------------------------------------------
    | Redis Databases
    |--------------------------------------------------------------------------
    |
    | Redis is an open source, fast, and advanced key-value store that also
    | provides a richer set of commands than a typical key-value systems
    | such as APC or Memcached. Laravel makes it easy to dig right in.
    |
     */

    'redis' => [

        'cluster' => false,

        'default'   => [
            'host'     => env('REDIS_HOST', 'localhost'),
            'password' => env('REDIS_PASSWORD', null),
            'port'     => env('REDIS_PORT', 6379),
            'database' => 0,
        ],

    ],

];

Alguém sabe uma solução?

14 respostas

Douglas, vá no arquivo .env e defina os valores la.

Não funcionou

Fiz assim e não deu

APP_DEBUG=true

DB_HOST=localhost
DB_DATABASE=estoque_laravel
DB_USERNAME=root
DB_PASSWORD=

Estranho, continua com esse erro?

PDO->__construct('mysql:host=127.0.0.1;dbname=homestead', 'homestead', 'secret', array('0', '2', '0', false, false)) in Connector.php line 55

Ele está procurando o banco homestead,do usuário homestead com senha secret.

Tem certeza que trocou as variaveis do .env e não do .env.example??

A única explicação é que em algum lugar suas variáveis de ambientes não foram alteradas.

Também estou achando muito estranho, eu exclui o example, é o .env mesmo. Eu alterei no db e no .env. Onde mais podem estar??

Douglas, na raíz do projeto abra o terminal e rode o comando php artisan config:clear

Não funcionou

Apareceu assim

in Connector.php line 55
at PDO->__construct('mysql:host=localhost;dbname=estoque_laravel', 'root', '', array('0', '2', '0', false, false)) in Connector.php line 55
at Connector->createConnection('mysql:host=localhost;dbname=estoque_laravel', array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'estoque_laravel', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, 'name' => 'mysql'), array('0', '2', '0', false, false)) in MySqlConnector.php line 24
at MySqlConnector->connect(array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'estoque_laravel', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, 'name' => 'mysql')) in ConnectionFactory.php line 61

Douglas, agora ele já está pegando os valores da .env, mas que erro está dando?

Continua o "Erro PDOException in Connector.php line 55: could not find driver"

Se for esse o erro ainda (could not find driver) procure o arquivo phpinfo e php.ini e veja se o modulo pdo_mysql não está comentado, se estiver, descomente.

solução!

Consegui resolver, valeu a ajuda

Pessoas, existe um erro com a conexão? http://stackoverflow.com/questions/28209536/laravel-5-database-issue

A solução é adicionar essa conexão: 'mysql' => [ 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'estoque_laravel', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, ],

O moderador poderia colocar a resolução dos problemas e comentar, este curso ao contrário dos demais está dando muito problemas na minha opinião.

A solução que o Philipe passou deu certo, mas pelo jeito esse tópico ficou sem resposta durante 3 meses...

A maneira como está sendo ensinada no vídeo não está mais dando certo, acredito que vcs deveriam revisar esses vídeos.

Bom dia pessoal. A solução que encontrei foi baixar o projeto Laravel na versão antiga, a que o professor usa e trabalhar como ele. Também concordo que o curso precisa de uma revisão. Faltou explicar coisas essenciais para um projeto como bibliotecas de e-mail e etc. Para a grandeza do laravel ficou um curso muito basicão. Ao contrario do curso de Codeigniter com o Guilherme onde aprendemos a configurar todas as partes do nosso projeto.