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
21 answers
Вы можете использовать
sudo apt-get install php7-mysql
Или
sudo apt-get install php5-mysql
Или
sudo apt-get install php-mysql
Это сработало для меня.
Это сработало для меня:
sudo apt-get install php5-sqlite
Это установило sqlite для php5, затем я снова запустил команду php artisan migrate и отлично сработал.
Вам необходимо специально включить плагин pdo_mysql. Предполагая, что вы используете стандартную установку PHP, тогда, как правило, вам просто нужно будет добавить это в свой файл PHP.ini:
extension=pdo_mysql.so
Однако вам необходимо убедиться, что этот файл существует в каталоге расширений.
Добавление pdo_pgsql.so
не помогает, потому что это для PostgreSQL.
Кроме того, вам следует убедиться, что вы перезапустили веб-сервер после внесения изменений в файл PHP ini, так как изменения могут не отражаться иначе.
Столкнулся с той же проблемой здесь, и оказалось, что это связано с тем, что 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
Пожалуйста, проверьте также ваш файл Laravel .env
. Убедитесь, что DB_CONNECTION=mysql
, иначе он не будет работать с MySQL. Он попытался загрузить что-то еще.
Имел ту же проблему и просто понял, что веб-сайт работает на php MAMP, но когда вы вызываете команду, он запускает mac (если путь bash не изменен). у вас возникнет проблема, если у Mac нет этих расширений.
Запустите php-i, чтобы узнать загруженные расширения, и установите те, которые вы пропустили. или запустите "/Приложения/MAMP/bin/php/php5.3.6/bin/php artisan {ваша команда}", чтобы использовать MAMP
Я также получал ту же ошибку --> "[Исключение PDOException]
не удалось найти водителя"
После этого я использовал много команд, но не получил никакой помощи
Наконец, я использовал следующую команду, которая решила мою проблему.
Sudo apt-получить установку php5-sqlite
Тестирование 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
Вам не хватает драйвера PDO.
Сначала установите драйвер
Для ubuntu: Для базы данных mysql.
Sudo apt-получить установку php5.6-mysql/php7.2-mysql
Вы также можете искать другие системы баз данных.
Вы также можете выполнить поиск драйвера:
Sudo apt-имя драйвера для поиска в кэше
Then Run the cmd php artisan migrate
Я удаляю ubuntu 14.04
Приведенная ниже команда решила эту проблему для меня.
Sudo apt-получить установку php-mysql
В моем случае, после обновления моей версии php с 5.5.9 до 7.0.8 я получил эту ошибку, включая две другие ошибки.
Ошибки:
Для Laravel/framework v5.2.14 требуется ext-mbstring* ->запрошенное расширение PHP mbstring отсутствует в вашей системе.
Для Phpunit/phpunit 4.8.22 требуется внешний домен * -> запрошенное расширение PHP dom отсутствует в вашей системе.
[ Исключение PDO]
не удалось найти водителя
Решения:
Я установил эти пакеты, и мои проблемы исчезли.
Sudo apt-получить установку php-mbstring
Sudo apt-получить установку php-xml
Sudo apt-получить установку php-mysql
Вы должны устанавливать последнюю версию php mysql
в моем случае я устанавливаю php7.1-mysql
Попробуйте это
sudo apt-get install php7.1-mysql
Я использую последнюю версию laravel
Это сработало со мной: (для pgsql: используйте "pgsql" вместо "mysql")
Шаг 1)
sudo apt-get install php-mysql
Шаг 2)
php artisan config:clear
Шаг 3)
php artisan config:cache
Шаг 4)
Затем перезагрузите сервер, снова сгенерируйте ключ и перенесите его, все готово
Для будущих исследователей. Во 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
Установите его с помощью этой команды
sudo apt-get install php5-gd
Это сработало для меня.
В моем случае я не знал, что PHP, запущенный Apache, отличается от PHP, запущенного CLI. Это может быть так, если во время настройки в httpd.conf вы указали модуль PHP, который не используется по умолчанию в вашем интерфейсе командной строки.
Я нашел правильное решение для этой ошибки! Либо у вас не установлена база данных, либо ваша база данных по умолчанию в этом файле 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
Я также получал ту же ошибку --> "[Исключение PDOException] не удалось найти водителя"
Я понял, что php указывает на /usr/bin/php вместо lampp/opt/lampp/bin/php, поэтому я просто создал и псевдоним
Псевдоним php="/opt/lampp/bin/php"
Также пришлось обновить файл .env, чтобы убедиться, что учетные данные для доступа к базе данных были обновлены.
И знаете что, это Сработало!
У меня была эта проблема в debian. Проблема заключалась в том, что я использовал репозиторий dotdeb для более поздних пакетов PHP. По какой-то причине он обновил интерфейс командной строки php до 7.0, в то время как двоичный файл веб-php остался php 5.6. Я использовал этот ответ, чтобы связать двоичный файл командной строки php с версией 5.6, вот так:
$ sudo ln -sfn /usr/bin/php5 /etc/alternatives/php
Если вы используете Laravel 5.x, и ошибка связана с попыткой изменить атрибуты столбца, возможно, ошибка связана с отсутствующим предварительным условием.
Попробуйте это:
composer require doctrine/dbal
Затем попробуйте запустить свои миграции.
Отсюда: https://laravel.com/docs/master/migrations#modifying-columns
Я получил эту ошибку для PostgreSQL, и решение таково:
sudo apt-get install php7.1-pgsql
Вам нужно использовать только вашу установленную версию PHP, моя - 7.1. Это исправило проблему для PostgreSQL.