php artisan мигрирует, выбрасывая [Исключение PDO], Не удалось найти драйвер с помощью Laravel


У меня плохой опыт при установке laravel. Однако я смог это сделать и перейти на следующий уровень. Я использовал генераторы и создавал свои миграции. Но когда я набираю последнюю команду

php artisan migrate

Это вызывает исключение PDOException - не удалось найти драйвер.

       'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',
            'database'  => 'database',
            'username'  => 'root',
            'password'  => '',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

Это моя конфигурация в config/database.php .

Я пытался искать на форумах stackoverflow и laravel, и люди предполагают, что это проблема PDO, а не ремесленника или php - я следил за ними такие предложения, как добавление

extension=pgsql.so
extension=pdo_pgsql.so

В php.ini

Никакого положительного результата. Он всегда говорит [PDOException]could not find driver.

Может кто-нибудь, пожалуйста, помочь решить эту проблему.

Среда, которую я использую: Mac, laravel 4, MAMP PRO с php 5.4.4

Author: Vamshi Vangapally, 2014-03-17

21 answers

Вы можете использовать

sudo apt-get install php7-mysql

Или

sudo apt-get install php5-mysql

Или

sudo apt-get install php-mysql

Это сработало для меня.

 40
Author: narendro, 2016-09-04 22:10:29

Это сработало для меня:

sudo apt-get install php5-sqlite

Это установило sqlite для php5, затем я снова запустил команду php artisan migrate и отлично сработал.

 19
Author: Alejandro, 2015-04-03 02:37:49

Вам необходимо специально включить плагин pdo_mysql. Предполагая, что вы используете стандартную установку PHP, тогда, как правило, вам просто нужно будет добавить это в свой файл PHP.ini:

extension=pdo_mysql.so

Однако вам необходимо убедиться, что этот файл существует в каталоге расширений.

Добавление pdo_pgsql.so не помогает, потому что это для PostgreSQL.

Кроме того, вам следует убедиться, что вы перезапустили веб-сервер после внесения изменений в файл PHP ini, так как изменения могут не отражаться иначе.

 15
Author: JaTochNietDan, 2014-03-17 19:44:16

Столкнулся с той же проблемой здесь, и оказалось, что это связано с тем, что PHP в командной строке использует другой файл php.ini из версии браузера, поэтому похоже, что расширение загружается правильно, когда вы смотрите на phpinfo() в браузере.

Согласно этому ответу , вам просто нужно запустить:

php --ini

В командной строке, которая укажет вам путь к загруженному в данный момент php.ini (возможно, на самом деле файл php-cli.ini расположен в том же месте, что и ваш обычный php.ini файл).

Как только вы это найдете, измените его с помощью расширений pdo, которые вы хотите (в данном случае для MySQL):

extension=pdo_mysql.so

Или для любых других пользователей, которые работают в Windows, используя какой-либо сервер WAMP, это, вероятно, выглядит так:

extension=php_pdo_mysql.dll
 7
Author: Leith, 2017-05-23 11:47:20

Я думаю, вы пропустили драйвер mysql для php5. Выполните следующую команду:

sudo apt-get install php5-mysql
/etc/init.d/php5-fpm restart
 6
Author: Robin Wang, 2016-09-05 13:31:51

Пожалуйста, проверьте также ваш файл Laravel .env. Убедитесь, что DB_CONNECTION=mysql, иначе он не будет работать с MySQL. Он попытался загрузить что-то еще.

 4
Author: Thach Van, 2016-03-27 15:03:49

Имел ту же проблему и просто понял, что веб-сайт работает на php MAMP, но когда вы вызываете команду, он запускает mac (если путь bash не изменен). у вас возникнет проблема, если у Mac нет этих расширений.

Запустите php-i, чтобы узнать загруженные расширения, и установите те, которые вы пропустили. или запустите "/Приложения/MAMP/bin/php/php5.3.6/bin/php artisan {ваша команда}", чтобы использовать MAMP

 2
Author: Entrust, 2015-04-02 11:49:59

Я также получал ту же ошибку --> "[Исключение PDOException]
не удалось найти водителя"

После этого я использовал много команд, но не получил никакой помощи

Наконец, я использовал следующую команду, которая решила мою проблему.

Sudo apt-получить установку php5-sqlite

 2
Author: hmmm, 2015-07-14 07:37:48

Тестирование Laravel с помощью sqlite требует драйверов php pdo sqlite

Для Ubuntu 14.04

sudo apt-get install php5-sqlite
sudo service apache2 restart

В ubuntu 16.04 нет php5-sqlite

sudo apt-get install php7.0-sqlite
sudo service apache2 restart
 2
Author: Sagar Koshti, 2016-10-19 12:15:45

Вам не хватает драйвера PDO.

Сначала установите драйвер

Для ubuntu: Для базы данных mysql.

Sudo apt-получить установку php5.6-mysql/php7.2-mysql

Вы также можете искать другие системы баз данных.

Вы также можете выполнить поиск драйвера:

Sudo apt-имя драйвера для поиска в кэше

Then Run the cmd php artisan migrate
 2
Author: abhishek subedi, 2017-07-28 08:28:48

Я удаляю ubuntu 14.04

Приведенная ниже команда решила эту проблему для меня.

Sudo apt-получить установку php-mysql

В моем случае, после обновления моей версии php с 5.5.9 до 7.0.8 я получил эту ошибку, включая две другие ошибки.

Ошибки:

  1. Для Laravel/framework v5.2.14 требуется ext-mbstring* ->запрошенное расширение PHP mbstring отсутствует в вашей системе.

  2. Для Phpunit/phpunit 4.8.22 требуется внешний домен * -> запрошенное расширение PHP dom отсутствует в вашей системе.

  3. [ Исключение PDO]
    не удалось найти водителя

Решения:

Я установил эти пакеты, и мои проблемы исчезли.

Sudo apt-получить установку php-mbstring

Sudo apt-получить установку php-xml

Sudo apt-получить установку php-mysql

 1
Author: sh6210, 2016-08-02 13:18:17

Вы должны устанавливать последнюю версию php mysql в моем случае я устанавливаю php7.1-mysql

Попробуйте это

sudo apt-get install php7.1-mysql

Я использую последнюю версию laravel

 1
Author: JalalKun, 2017-09-23 03:38:09

Это сработало со мной: (для pgsql: используйте "pgsql" вместо "mysql")

Шаг 1)

sudo apt-get install php-mysql

Шаг 2)

php artisan config:clear

Шаг 3)

php artisan config:cache

Шаг 4)
Затем перезагрузите сервер, снова сгенерируйте ключ и перенесите его, все готово

 1
Author: Praveen Mendegar, 2018-06-04 10:49:16

Для будущих исследователей. Во FreeBSD попробуйте выполнить следующий

pkg_info | grep php5-pdo_mysql

Если вы видите пустую строку в ответ, сделайте следующее:

cd /usr/ports/databases/php5-pdo_mysql

И выполните установку

make install clean

Затем просто перезапустите свой apache, и все готово

Например. sudo /usr/local/etc/rc.d/apache22 restart

 0
Author: Aleksey Potapov, 2015-01-16 20:15:39

Установите его с помощью этой команды

sudo apt-get install php5-gd

Это сработало для меня.

 0
Author: briankip, 2015-01-21 19:46:48

В моем случае я не знал, что PHP, запущенный Apache, отличается от PHP, запущенного CLI. Это может быть так, если во время настройки в httpd.conf вы указали модуль PHP, который не используется по умолчанию в вашем интерфейсе командной строки.

 0
Author: Sven P, 2016-04-03 11:43:50

Я нашел правильное решение для этой ошибки! Либо у вас не установлена база данных, либо ваша база данных по умолчанию в этом файле config/database.php устанавливается в какую-либо другую базу данных, подобную этой

'default' => 'sqlite',
'default' => env('DB_CONNECTION', 'sqlite'), //laravel 5.2

Измените значение по умолчанию, на которое вы установили, или установите ту базу данных, которая установлена по умолчанию! Я установил mysql, и php artisan migrate работал после того, как я изменил эту строку на следующую:

'default' => 'mysql',
'default' => env('DB_CONNECTION', 'mysql'), //laravel5.2
 0
Author: lewis4u, 2016-04-28 11:51:55

Я также получал ту же ошибку --> "[Исключение PDOException] не удалось найти водителя"

Я понял, что php указывает на /usr/bin/php вместо lampp/opt/lampp/bin/php, поэтому я просто создал и псевдоним

Псевдоним php="/opt/lampp/bin/php"

Также пришлось обновить файл .env, чтобы убедиться, что учетные данные для доступа к базе данных были обновлены.

И знаете что, это Сработало!

 0
Author: lightup, 2016-07-07 09:24:52

У меня была эта проблема в debian. Проблема заключалась в том, что я использовал репозиторий dotdeb для более поздних пакетов PHP. По какой-то причине он обновил интерфейс командной строки php до 7.0, в то время как двоичный файл веб-php остался php 5.6. Я использовал этот ответ, чтобы связать двоичный файл командной строки php с версией 5.6, вот так:

$ sudo ln -sfn /usr/bin/php5 /etc/alternatives/php
 0
Author: user151841, 2017-04-13 12:22:39

Если вы используете Laravel 5.x, и ошибка связана с попыткой изменить атрибуты столбца, возможно, ошибка связана с отсутствующим предварительным условием.

Попробуйте это:

 composer require doctrine/dbal

Затем попробуйте запустить свои миграции.

Отсюда: https://laravel.com/docs/master/migrations#modifying-columns

 0
Author: Arlyn, 2016-08-08 15:37:38

Я получил эту ошибку для PostgreSQL, и решение таково:

sudo apt-get install php7.1-pgsql

Вам нужно использовать только вашу установленную версию PHP, моя - 7.1. Это исправило проблему для PostgreSQL.

 0
Author: MKJ, 2018-07-18 09:06:51