#php #laravel #postgresql #laravel-5 #eloquent
#php #laravel #postgresql #laravel-5 #красноречивый
Вопрос:
Я создаю веб-приложение с двумя базами данных:
Первый: база данных для регистрации пользователей, регистрации и т. Д. / В MySQL
Второй: база данных для данных фондового рынка / в PostgreSQL
Первая база данных (MySQL) работает без каких-либо проблем.
Но второй (PostgreSQL) не работает.
Это мой env-файл:
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=panel
DB_USERNAME=root
DB_PASSWORD=
DB_CONNECTION_SECOND=pgsql
DB_HOST_SECOND=localhost
DB_PORT_SECOND=5432
DB_DATABASE_SECOND=assets_daily_info
DB_USERNAME_SECOND=postgres
DB_PASSWORD_SECOND=1234
И вот файл php конфигурации базы данных:
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'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', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
'pgsql' => [
'driver' => 'pgsql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST_SECOND', '127.0.0.1'),
'port' => env('DB_PORT_SECOND', '5432'),
'database' => env('DB_DATABASE_SECOND', 'forge'),
'username' => env('DB_USERNAME_SECOND', 'forge'),
'password' => env('DB_PASSWORD_SECOND', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
'schema' => 'public',
'sslmode' => 'prefer',
],
Я создал модель, в которой я хочу получать данные из базы данных PostgreSQL:
namespace AppModels;
use IlluminateSupportFacadesDB;
use IlluminateDatabaseEloquentModel;
class Thepage extends Model
{
protected $connection = 'pgsql';
protected $table = 'queue_stats';
protected $fillable = [
'buyqueue', 'sellqueue', 'timestamp',
];
}
И, наконец, вот контроллер:
class Thepage Controller extends Controller
{
public function index()
{
$queues = Thepage::all();
return view('pages.queue-stats',compact('queues'));
}
}
Проблема в том, что laravel не может найти драйвер, он просто показывает:
IlluminateDatabase QueryException не удалось найти драйвер (SQL: выберите * из «queue_stats»)
Я дважды проверил файлы apache и php .ini, расширения pdo_pgsql и pgsql не раскомментированы в обоих файлах.
Я попробовал очистить кеш и кеш конфигурации, ничего не произошло, и я все еще получаю эту досадную ошибку.
Где я делаю неправильно?
Комментарии:
1.
php -m
Показывает ли расширение?2. @DigitalDrifter да, pdo_mysql pdo_pgsql pdo_sqlite pgsql
3. Используете ли вы php-fpm? Если да, то что
phpinfo();
покажет, если вы добавите это как вверхуpublic/index.php
, а затем получите доступ к своей домашней странице в браузере? Вы должны увидеть кучу сброшенной информации и раздел со списком включенных расширений.
Ответ №1:
Выполните следующие команды :
composer update
composer require doctrine/dbal
Обязательно раскомментируйте / добавьте extension=pdo_pgsql.so
в свой файл php.ini вашей запущенной версии PHP.
Комментарии:
1. Я раскомментировал это
2. @MostafaSafarian, остановите свой проект laravel и зарезервируйте его снова с
php artisan serve
помощью или перезапустите Apache / Nginx, если вы работаете на Linux3. выполнил все шаги, но по-прежнему безуспешно. он по-прежнему показывает
IlluminateDatabaseQueryException could not find driver (SQL: select * from "queue_stats")