Php artisan migrate throwing [PDO Exception] Не удалось найти драйвер - Использование 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, а не artisan или php, - я следил за такими предложениями, как добавление

extension=pgsql.so
extension=pdo_pgsql.so

в php.ini

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

Кто-нибудь может помочь решить эту проблему.

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

Ответ 1

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

sudo apt-get install php7-mysql

или

sudo apt-get install php5-mysql

или

sudo apt-get install php-mysql

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

Ответ 2

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

sudo apt-get install php5-sqlite

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

Ответ 3

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

extension=pdo_mysql.so

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

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

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

Ответ 4

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

sudo apt-get install php5-mysql
/etc/init.d/php5-fpm restart

Ответ 5

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

Ответ 6

В этой же проблеме возникает проблема, и получается, что 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

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

запустите php -i, чтобы узнать загруженные расширения и установите те, которые вы пропустили. или запустите '/Applications/MAMP/bin/php/php5.3.6/bin/php artisan {your command}', чтобы использовать

MAMP

Ответ 8

Я также получал ту же ошибку → "[PDOException]
не удалось найти драйвер"

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

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

sudo apt-get install php5-sqlite

Ответ 9

Тестирование 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

Ответ 10

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

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

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

sudo apt-get install php5.6-mysql/php7.2-mysql

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

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

sudo apt-cache search drivername

Then Run the cmd php artisan migrate

Ответ 11

Я не знаю ubuntu 14.04

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

sudo apt-get install php-mysql

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

ошибки:

  • laravel/framework v5.2.14 требует ext-mbstring * → запрошенное расширение PHP mbstring отсутствует в вашей системе.

  • phpunit/phpunit 4.8.22 требует ext-dom * → запрошенное расширение PHP расширения отсутствует в вашей системе.

  • [PDOException]
    не удалось найти драйвер

Решения:

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

sudo apt-get install php-mbstring

sudo apt-get install php-xml

sudo apt-get install php-mysql

Ответ 12

Для будущих поисковиков. На 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

Ответ 13

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

sudo apt-get install php5-gd

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

Ответ 14

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

Ответ 15

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

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

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

'default' => 'mysql',
'default' => env('DB_CONNECTION', 'mysql'), //laravel5.2

Ответ 16

Я также получал ту же ошибку → "[PDOException] не удалось найти драйвер "

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

alias php = "/opt/lampp/bin/php"

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

И угадайте, что, это работало!

Ответ 17

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

$ sudo ln -sfn /usr/bin/php5 /etc/alternatives/php

Ответ 18

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

Попробуйте следующее:

 composer require doctrine/dbal

Затем попробуйте выполнить ваши миграции.

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

Ответ 19

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

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

sudo apt-get install php7.1-mysql

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