it-roy-ru.com

php artisan migrate throwing [Исключение 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

30
Vamshi Vangapally

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

Sudo apt-get install php7-mysql

или же

Sudo apt-get install php5-mysql

или же

Sudo apt-get install php-mysql

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

44
narendro

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

Sudo apt-get install php5-sqlite

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

19
Alejandro

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

extension=pdo_mysql.so

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

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

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

16
JaTochNietDan

Здесь возникла та же проблема, и выясняется, что это связано с тем, что 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
Leith

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

Sudo apt-get install php5-mysql
/etc/init.d/php5-fpm restart
6
Robin Wang

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

4
Thach Van

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

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

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

Sudo apt-get установить php5-sqlite

2
hmmm

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

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

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

2
Entrust

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

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

Для Ubuntu: Для базы данных MySQL.

Sudo apt-get установить php5.6-mysql/php7.2-mysql

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

Вы также можете искать водителя:

Sudo apt-cache поиск имя_дервера

Then Run the cmd php artisan migrate
2
abhishek subedi

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

Попробуй это

Sudo apt-get install php7.1-mysql

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

1
JalalKun

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

Sudo apt-get install php7.1-pgsql

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

1
MKJ

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

Шаг 1)

Sudo apt-get install php-mysql

Шаг 2)

php artisan config:clear

Шаг 3)

php artisan config:cache

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

1
Praveen Mendegar

Я использую Ubuntu 14.04

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

Sudo apt-get установить 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 требует ext-dom * -> запрошенное расширение PHP dom отсутствует в вашей системе.

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

Решения:

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

Sudo apt-get установить php-mbstring 

Sudo apt-get установить php-xml

Sudo apt-get установить php-mysql

1
sh6210

только что заменил:; расширение = pdo_mysql на расширение = pdo_mysql в файле php.ini.

0
Heatscar_

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

$ Sudo ln -sfn /usr/bin/php5 /etc/alternatives/php
0
user151841

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

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

Sudo apt-get install php5-Gd

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

0
briankip

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

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

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

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

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

0
lightup

Я нашел правильное решение для этой ошибки! Либо у вас нет установленной базы данных, либо ваша база данных по умолчанию в этом файле 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
lewis4u

Если вы используете систему на основе Arch, как в Manjaro 

просто используйте 

Sudo pacman -S php-sqlite

Перезапустите ваш httpd

systemctl restart httpd
0
nayan verma

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

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

 composer require doctrine/dbal

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

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

0
Arlyn

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

0
Sven P

для тех пользователей windows 10 и WAMP, которые нашли этот пост, у меня есть решение . Пожалуйста, перейдите по этой ссылке . Это сработало для меня, и было трудно прийти к решению, но я надеюсь, что это может помочь другим в будущем.

0
abel406