Tem alguma maneira de usar o postgre em conjunto do wamp ? para o curso posso fazer normalmente com mysql, mas onde estou estagiando vou ter que usar o postgre + php e laravel, gostaria de saber como seria a melhor maneira de solucionar isso.
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!
Tem alguma maneira de usar o postgre em conjunto do wamp ? para o curso posso fazer normalmente com mysql, mas onde estou estagiando vou ter que usar o postgre + php e laravel, gostaria de saber como seria a melhor maneira de solucionar isso.
Dá pra conectar facilmente com o PostgreSQL
No diretório config, abre o arquivo database.php e modifique as linhas conforme abaixo.
Onde está
'default' => env('DB_CONNECTION', 'mysql'),
Troque para
'default' => env('DB_CONNECTION', 'pgsql'),
Logo abaixo nesse mesmo arquivo, há uma parte digna de atenção.
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => database_path('database.sqlite'),
'prefix' => '',
],
'mysql' => [
'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', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'pgsql' => [
'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' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],
],
Observe o nó 'pgsql'. Ai estão as configurações da conexão, se você não mudar nada ai, o Laravel vai seguir as credenciais de acesso configuradas dentro do arquivo .env e se elas não forem encontradas, vai usar os dados do segundo parâmetro da função env.
Exemplo
/*
* Se existir DB_DATABASE dentro do
* arquivo .env, então vai usá-lo , caso contrário, vai usar o valor 'forge'
*/
'database' => env('DB_DATABASE', 'forge')
Eu uso bastante o Laravel conectado com PostgreSQL, prefiro ele que MySQL. Se eu puder te ajudar em alguma coisa, estou a disposição
Ok, fiz isso, mas estou com erros
SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES) (SQL: select * from produtos)
Eu instalei o postgre, pelo o instalador padrão dele, no caso eu não sei o login, eu acesso o banco pelo PgAdmin. Tem alguma outra alternativa ?
Se você instalou no Windows. Deve ter colocado uma senha pro usuário postgres.
Você tá conectando via pgAdmin com um usuário e senha ( provavelmente postgres + uma senha que colocou na instalação ).
Agora, vai dentro do arquivo .env na raiz do projeto e modifique ele assim:
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=NomeDoSeuBancoDeDados
DB_USERNAME=postgres
DB_PASSWORD=suasenha
Execute o comando abaixo na raiz do seu projeto
php artisan config:clear
Verifique se resolve o problema
PDOException could not find driver
está dando esse erro acima
e este QueryException could not find driver (SQL: select * from produto)
Esse erro costuma acontecer quando a extensão do postgres não está ativa no PHP.
Abra o arquivo php.ini na raiz da sua instalação PHP, procure pela linhas abaixo e tire o ';' do inicio da mesma conforme abaixo:
Linha original
;extension=php_pdo_pgsql.dll
;extension=php_pgsql.dll
Como deve ficar ( Sem o ';' no começo )
extension=php_pdo_pgsql.dll
extension=php_pgsql.dll
Tem que reiniciar o Apache depois da modificação.
Veja se resolve
ae deu certo vlw!!!