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 я получил эту ошибку, включая две другие ошибки.
ошибки:
laravel / framework v5.2.14 требует ext-mbstring * -> запрошенное расширение PHP mbstring отсутствует в вашей системе.
phpunit / phpunit 4.8.22 требует ext-dom * -> запрашиваемое расширение PHP dom отсутствует в вашей системе.
[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
Затем попробуйте запустить миграцию.