php artisan migrate throwing [Исключение PDO] Не удалось найти драйвер - Использование Laravel

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

php artisan migrate

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

       '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.

Я пробовал искать на форумах stackru и 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

28 ответов

Решение

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

sudo apt-get install php7-mysql

или же

sudo apt-get install php5-mysql

или же

sudo apt-get install php-mysql

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

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

extension=pdo_mysql.so

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

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

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

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

sudo apt-get install php5-sqlite

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

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

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

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

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

Попробуй это

sudo apt-get install php7.1-mysql

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

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

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

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

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

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

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

sudo apt-cache поиск имя_папки

Then Run the cmd php artisan migrate

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

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

Шаг 1)

sudo apt-get install php-mysql

Шаг 2)

php artisan config:clear

Шаг 3)

php artisan config:cache

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

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

sudo apt-get install php7.1-pgsql

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

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

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

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

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

Для тестирования Laravel с использованием sqlite требуются драйверы php pdo sqlite

Для Ubuntu 14.04

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

В убунту 16.04 нет php5-sqlite

sudo apt-get install php7.0-sqlite
sudo service apache2 restart

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

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

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

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

Сначала проверьте свою версию php следующим образом:

php -v

после того, как вы получите номер версии, например, я получаю 7.1, а затем устанавливаю так

sudo apt-get install  php7.1-sqlite     //for laravel testing with sqlite
sudo apt-get install  php-mysql         //for default mysql
sudo apt-get install  php7.1-mysql      //for version based mysql 
sudo apt-get install  php7.1-common     //for other necessary package for php

и нужно перезапустить apache2

sudo service apache2 restart

Я использую 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

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

Это проблема с MAC и MAMP. Попробуйте добавить в свой файл .env это:

      DB_SOCKET= /Applications/MAMP/tmp/mysql/mysql.sock

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

Это расширяет ответ Свена П.:

Я сам был сбит с толку этим сообщением об ошибке при обновлении до новой капли DigitalOcean, работающей под управлением Ubuntu 20.04 и Laravel 8.x. Следует иметь в виду, что вы работаете в командной строке, и она может отличаться от версии PHP, которую вы используете на сервере Apache. Мои тестовые приложения Laravel работали гладко, но я не мог запускать команды, связанные с Postgresql, из командной строки. Затем я вспомнил, что версия PHP по умолчанию для Ubuntu 20.04 — 8.x, и я настроил свой сервер Apache для работы с PHP 7.4. Этот туториал стал моим спасением: Как переключить версию PHP на Ubuntu 20.04 LTS . Проверьте свою версию PHP. Разумеется, мой CLI PHP был версии 8.x, поэтому драйвер Postgresql не был установлен и включен. Следуя учебнику, я побежал

sudo update-alternatives --config php

и выбрал свою установку PHP 7.4, и теперь, когда я вхожу в свой SSH-клиент и проверяю версию PHP, он отображает 7.4, где я установил и включил Postgresql. Итак, теперь мой php artisan migrateкоманда работает гладко, и я могу вернуться к работе.

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

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

sudo apt-get install php5-gd

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

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

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

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

sudo pacman -S php-sqlite

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

systemctl restart httpd

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

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

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

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

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

Для будущих искателей. На 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

Предполагая, что вы выполнили обычную установку с виртуальным ящиком, бродягой и т. Д. Это может случиться с новыми людьми.PHP можно установить на ваш компьютер, но все модули PHP для вашего проекта laravel находятся на вашей виртуальной машине. Чтобы получить доступ к вашей виртуальной машине, перейдите в папку вашей усадьбы и введите: vagrant ssh

затем перейти по пути вашего проекта и выполнить миграцию php artisan migrate.

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

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

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

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

 composer require doctrine/dbal

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

Отсюда: https://laravel.com/docs/master/migrations

Другие вопросы по тегам