9
respostas

Executando o exemplo do exercicio 2

Estou recebendo o erro: PDOException in Connector.php line 55: SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES)

1) estou usando uma base : controleturmas

meu database.php 'default' => env('DB_CONNECTION', 'mysql'),

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

2) estou utilizando uma tabela alunos

meu AlunoController.php <?php namespace controleturmas\Http\Controllers;

use Illuminate\Support\Facades\DB;

class AlunoController extends Controller {

public function lista(){

$html = '

Listagem de Alunos

';

$html .= '

  • ';

    $alunos = DB::select('select * from alunos');

    foreach ($alunos as $a) { $html .= '

  • Nome: '. $p->nome .', Email: '. $p->email .'
  • '; }

    $html .='

';

return $html;

}

3) meu routes.php

<?php

Route::get('/', function(){ return '

Listagem de Alunos

'; });

Route::get('/alunos', 'AlunoController@lista');

4) meu .env

APP_DEBUG=true

9 respostas

Olá Hugff, tive o mesmo problema. Pelo que percebi, o laravel ao tentar se conectar com o banco de dados, não utilizou os dados fornecidos no arquivo database.php e sim aqueles que estavam no .env.

Consegui corrigir isso, adicionando ao arquivo .env as seguintes linhas

DB_DATABASE=estoque_laravel
DB_USERNAME=root
DB_PASSWORD=

Altere para o seu caso e veja se corrige, no entanto fica a minha dúvida também de porquê o laravel não utilizou do arquivo database.php.

Acompanhando, e, por hora, espero ter ajudado de alguma forma.

Mateus, Segui sua sugestão e o erro agora é totalmente sem sentido para mim. " RuntimeException in EncryptionServiceProvider.php line 45: No supported encrypter found. The cipher and / or key length are invalid. " Como se a configuração de criptografia estivesse fora de validade ou inválida.

Agora tentei o seguinte: No config/app.php está com chave de 256 bits, "AES-256-CBC" troquei para "AES-128-CBC" e nada. O erro é o mesmo: RuntimeException in EncryptionServiceProvider.php line 45: No supported encrypter found. The cipher and / or key length are invalid.

Hugff, pelo que pesquisei, o arquivo .env precisa ter um valor setado que é o "APP_KEY"

Você pode executar esse comando no terminal php artisan key:generate e colar a key completa que é gerada no arquivo .env da seguinte forma

APP_KEY = //aqui você coloca a key gerada

Isso já deve corrigir esse erro, o que achei estranho é o fato de no curso mesmo com todas as configs do .env apagadas, o sistema continuou rodando normal.

Qual versão do Laravel você está usando ?

o problema é que está identificando um banco chamadado homestead com usuario homestead. Por alguma razão não está lendo o database.php.

Oi hugff,

Pode nos mostrar como está o seu arquivo de database e também o arquivo .env atual?

Além disso, consegue compartilhar a msg de erro completa que aparece no seu navegador?

Estou com o mesmo problema do hugff.

in Connector.php line 55 at PDO->__construct('mysql:host=127.0.0.1;port=3306;dbname=homestead', 'homestead', 'secret', array('0', '2', '0', false, '0')) in Connector.php line 55 at Connector->createConnection('mysql:host=127.0.0.1;port=3306;dbname=homestead', array('driver' => 'mysql', 'host' => '127.0.0.1', 'port' => '3306', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, 'name' => 'mysql'), array('0', '2', '0', false, '0')) in MySqlConnector.php line 24 at MySqlConnector->connect(array('driver' => 'mysql', 'host' => '127.0.0.1', 'port' => '3306', '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 908 at Connection->getPdo() in Connection.php line 776

meu database.php

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

agora o .env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=supervisordb
DB_USERNAME=root
DB_PASSWORD=

Da forma acima, onde tanto database.php como o .env estão com informaçoes sincronizadas, FUNCIONA. É só re-start no laravel.

No entanto, eu configurei tudo a mão! em particular o .env.

No exercicio é para apagarmos o .env, mas o receio é que depois de configurar o database.php não seja o suficiente para conseguirmos a conexão com o banco. Parece que a integração não está OK.

LEMBRO QUE: Estou utilizando WINDOWS com o LARAVEL 5.0, Acredito que seja a fonte de diferenças entre o que é apresentado para quem utiliza IOS.

Oi Hugff

Que bom que funcionou dessa forma. Vou pedir pra revisarem essa parte do curso no windows, pra ver se algo diferente acontece. Pode sim ter relação com o sistema operacional e environment.

obrigado e bons estudos

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software