Исключение PDOException::(«не удалось найти драйвер») — macOS Big Sur, PSQL

#php #laravel #macos #psql #php-7.3

Вопрос:

У меня есть Laravel 5.8, работающий локально на моем macOS Big Sur 11.4

Я проверил phpinfo(); , введите описание изображения здесья вижу

Загруженный Файл Конфигурации

 /Applications/MAMP/bin/php/php7.4.12/conf/php.ini.
 

pdo_pgsql

Я проверил /Applications/MAMP/bin/php/php7.4.12/conf/php.ini. , нашел ли я их, они уже раскомментированы.

введите описание изображения здесь

Это также отражено на странице phpinfo

введите описание изображения здесь


В последнее время я не могу php artisan migrate успешно бегать, я все время получаю :

ОсветитьБаза данныхИсключение запроса : не удалось найти драйвер (SQL: выберите * из information_schema.таблицы, где table_schema = общедоступный и table_name = миграции и table_type = «БАЗОВАЯ ТАБЛИЦА»)

Я использую psql не MySQL.

 DB_LOCAL_CONNECTION=pgsql
DB_LOCAL_HOST=localhost
DB_LOCAL_PORT=5432
DB_LOCAL_DATABASE=dbName
DB_LOCAL_USERNAME=postgres
DB_LOCAL_PASSWORD=
 

Я проверил не тот файл? Что еще я должен проверить ?


@Тим : Я добавил это в соответствии с вашим комментарием.

 <?php

return [

    'default' => env('DB_LOCAL_CONNECTION', 'pgsql'),

    'connections' => [

        'pgsql' => [
            'driver' => 'pgsql',
            'host' => env('DB_LOCAL_HOST', '127.0.0.1'),
            'port' => env('DB_LOCAL_PORT', '5432'),
            'database' => env('DB_LOCAL_DATABASE', 'db'),
            'username' => env('DB_LOCAL_USERNAME', 'user'),
            'password' => env('DB_LOCAL_PASSWORD', '123'),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
            'schema' => 'public',
            'sslmode' => 'prefer',
        ],

    ]

];
 

@Мозг

Это для тебя. Я попытался обновить версию CLI до 7.3 таким образом, и проверьте ini-файл этой версии 7.3, он включен … пожалуйста, смотрите шаги ниже

 brew install php@7.3
cd /usr/local/etc/php/7.3/
code php.ini


➜  7.3 cat php.ini | grep pgsql                                                                                          
extension=pdo_pgsql                                                                                                      
extension=pgsql                                                                                                          
; http://php.net/pgsql.allow-persistent                                                                                  
pgsql.allow_persistent = On                                                                                              
; http://php.net/pgsql.auto-reset-persistent                                                                             
pgsql.auto_reset_persistent = Off                                                                                        
; http://php.net/pgsql.max-persistent                                                                                    
pgsql.max_persistent = -1                                                                                                
; http://php.net/pgsql.max-links                                                                                         
pgsql.max_links = -1                                                                                                     
; http://php.net/pgsql.ignore-notice                                                                                     
pgsql.ignore_notice = 0                                                                                                  
; Unless pgsql.ignore_notice=0, module cannot log notice message.                                                        
; http://php.net/pgsql.log-notice                                                                                        
pgsql.log_notice = 0
 

Комментарии:

1. Вчера у меня была похожая проблема. Попробуйте использовать порт 5433.

2. Не имеет значения , является ли порт 5432 или 5433 , ошибка заключается в том, что у вас нет драйвера для использования pgsql , а не в том, что он не может подключиться к базе данных.

3. Возможная проблема заключается в том, что ваше default соединение не использует вашу .env переменную: 'default' => env('DB_CONNECTION', 'pgsql'), . Видите , как это соотносится DB_CONNECTION , но ваше имя DB_LOCAL_CONNECTION ? Это не совпадает. Примечание: Это настройки по умолчанию, вы не показали эту конкретную настройку, так что это предположение.

4.@TimLewis : У меня есть эта строка в моем database.php 'default' => env('DB_LOCAL_CONNECTION', 'pgsql'),

5. Спасибо, это все проясняет. Это было подозрение, но да, похоже, все в порядке.

Ответ №1:

Вам следует проверить свой php.ini файл на наличие расширений с именами: pdo_pgsql.so и pgsql.so здесь и без комментариев.

Комментарии:

1. Я видел эти строки extension=pgsql.so и extension=pdo_pgsql.so уже раскомментировал их. Я зарегистрировался, /Applications/MAMP/bin/php/php7.4.12/conf/php.ini я проверял не тот файл ?