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.
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!!!