Solucionado (ver solução)
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.