Laravel 5 с Postgres SQL
Im работает над Laravel 5 с postgres как базой данных. Ive настроил postgres 9.4 и pgAdmin III, и они работают нормально. Когда я пытаюсь выполнить миграцию, он дает мне ошибку:
[PDOException]
не удалось найти драйвер
Это моя database.php
'default' => 'pgsql',
'pgsql' => [ 'driver' => 'pgsql',
'host' => '127.0.0.1',
'database' => 'fms',
'username' => 'postgres',
'password' => 'root',
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public', ],
Изначально, хотя это было связано с настройкой postgres на windows 7, но я пробовал с простым php, он отлично работает
<?php
$host = "host=127.0.0.1";
$port = "port=5432";
$dbname = "dbname=fms";
$db = pg_connect( "$host $port $dbname user=postgres password=root" );
if(!$db){
echo "Error : Unable to open database\n";
} else {
echo "Opened database successfully\n";
}
?>
Ive включил php_pgsql и php_pdo_sql в wamp. Я не уверен, как исправить это на laravel 5.
Ответы
Ответ 1
Как вы уже сказали, вы уже выбрали базу данных по умолчанию как Postgres SQL
'default' => 'pgsql',
Необходимо, чтобы вы раскомментировали общий объект pdo и postgres в настройках конфигурации php (php.ini)
i.e. Вам нужно раскомментировать следующие строки в php.ini
extension=pdo_pgsql.so
extension=pgsql.so
Примечание:
Не забудьте остановить и запустить apache после выполнения этих изменений.
Ответ 2
У меня была та же проблема, что и драйвер Laravel-WAMP-PostgreSql не найден. Я даже успешно установил прямое соединение с Postgre, как и у вас, но не повезло с командой "php artisan migrate".
После долгих исследований выяснилось, что есть несколько файлов php.ini, в которых "extension = php_pdo_pgsql.dll" и "extension = php_pgsql.dll" достойны внимания.
Решение (конечно), чтобы не допустить расширения в следующих файлах:
- ~/WAMP/бен/PHP/php5.5. */Php.ini
- ~/WAMP/бен/PHP/php5.5. */PhpForApache
- ~/WAMP/бен/PHP/php5.5. */Php.ini.install
- ~/wamp/bin/php/php5.5. */php.ini-development
- ~/WAMP/бен/PHP/php5.5. */Php.ini-производство
и
- ~/WAMP/бен/Apache/apache2.4.9/php.ini
** Вы можете оставить "php.ini-development" и "php.ini-production" (не нужно их не выполнять).
Ответ 3
вам нужно изменить файл .env, затем перейдите в config > database.php и измените значение по умолчанию на pgsql, а также во всех файлах ваших моделей вам нужно изменить $protected $connection = 'pgsql'.
Ответ 4
Как и @jeff, это, вероятно, вызвано не установкой DB_CONNECTION=pgsql
в .env
-file. Файл .env
имеет предварительно сконфигурированный MySQL, поэтому вы должны редактировать этот файл.