php artisan migrate: [PDOException] не удалось найти драйвер

Конфигурация моей системы: Ubuntu 14.04 + XAMPP + Laravel 4.

драйвер mysql настроен в /opt/lampp/htdocs/larva/app/config/database.php

'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'db_larva',
            'username'  => 'root',
            'password'  => '*****',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => 'tbl_',
        ),

Расширение PDO включено в /opt/lampp/etc/php.ini

extension=php_pdo_mysql.dll

создать таблицу с помощью

php artisan migrate:make create_users --create=users 

которые генерируют 2014php artisan migrate:make create_users --create --table=users02_114459_create_users.php

php artisan migrate:make create_orders --create=orders

создать 2014php artisan migrate:make create_users --create --table=users02_054103_create_orders.php

теперь на терминале, что я сделал

cd /opt/lampp/htdocs/larva/ 
php artisan migrate

это дает ошибку

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

когда я бегу

php artisan migrate --database=db_larva

опять выдает другую ошибку

[InvalidArgumentException]
База данных [db_larva] не настроена.

Пожалуйста, направьте меня, что я делаю неправильно?

Мое предположение:

  • Расположение правильное? запустить php artisan внутри корневой папки?

  • Структура таблицы по умолчанию внутри function up() требует написания дополнительного кода, возможно, это настройки подключения к базе данных.

  • разница между php artisan migrate:make create_users --create=users и php artisan migrate:make create_users --create --table=users
  • Мне также нужно настроить параметры базы данных где-то еще.
  • префикс таблицы может быть проблематичным.
  • Я еще не написал ни одной строки для подключения к базе данных нигде в коде. где в коде прописать строку соединения, или это более поздний этап?

  • #P17# <блочная цитата>
    Configuration File (php.ini) Path: /etc/php5/cli
    Loaded Configuration File:         /etc/php5/cli/php.ini
    Scan for additional .ini files in: /etc/php5/cli/conf.d
    Additional .ini files parsed:      /etc/php5/cli/conf.d/05-opcache.ini,
    /etc/php5/cli/conf.d/10-pdo.ini,
    /etc/php5/cli/conf.d/20-json.ini,
    /etc/php5/cli/conf.d/20-mcrypt.ini,
    /etc/php5/cli/conf.d/20-readline.ini,
    /etc/php5/cli/conf.d/20-xdebug.ini
    

person diEcho    schedule 02.10.2014    source источник
comment
проверьте это решение   -  person Dov Benyomin Sohacheski    schedule 16.04.2016


Ответы (6)


Я получил эту ошибку на xubuntu 14.04. Я исправил это в 2 шага:

  1. Откройте терминал и запустите sudo apt-get install php5-mysql
  2. измените db-host на 127.0.0.1 (вместо использования localhost)
person Naimuddin Bhuyan    schedule 20.02.2016

Параметр --database= используется для выбора подключения к БД. Ваше имя подключения к БД — mysql, потому что у вас есть:

'mysql' =>

поэтому вы должны запустить этот запрос, используя:

php artisan migrate --database=mysql

Однако в файле app/config/database.php есть строка:

'default' => 'mysql',

Если вы установите для него значение mysql, вам не нужно передавать параметр --database при миграции, если вы хотите перейти на подключение к базе данных по умолчанию.

php artisan migrate

будет достаточно

ИЗМЕНИТЬ

В вашем случае вы должны отредактировать файл /etc/php5/cli/php.ini, чтобы включить расширение PDO.

person Marcin Nabiałek    schedule 02.10.2014
comment
да. вот в чем проблема. php artisan migrate не работает, кстати, это был оригинальный вопрос - person diEcho; 02.10.2014
comment
@diEcho У вас такая же ошибка? Что вы определили как соединение по умолчанию и какую команду вы пробовали? Вы уверены, что у вас нет базы данных, установленной также в другой среде? - person Marcin Nabiałek; 02.10.2014
comment
@diEcho Вы должны запустить в терминале php --ini, чтобы отобразить путь к файлу ini и убедиться, что в этом файле также включен PDO - person Marcin Nabiałek; 02.10.2014
comment
Я так и сделал, но, как ни странно, он показывает другой путь к ini file, но я перепроверил и понял, что php.ini внутри файла /lammp/.. является рабочим ini. - person diEcho; 02.10.2014
comment
@diEcho Часто php cli и standard php имеют разные пути к файлам ini. - person Marcin Nabiałek; 02.10.2014
comment
Давайте продолжим обсуждение в чате. - person diEcho; 02.10.2014
comment
.dll предназначена для Windows, пока вы используете Linux. Вероятно, вы должны иметь extension=php_pdo_mysql.so в вашем файле /etc/php5/cli/php.ini. - person Stelian; 07.01.2015
comment
это сработало, потому что у меня был другой php для xampp и другой для командной строки - person Rishiraj Purohit; 21.09.2017

У меня была та же ошибка, и я очистил ее, добавив доктрину/dbal

composer require doctrine/dbal
person Rob Foran    schedule 07.08.2015

Измените файл .env. У меня также была такая же проблема с laravel 5.2.

Я изменил следующий код, и он работал нормально.

APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString

DB_HOST=localhost
DB_DATABASE=todo  /* Use your database Name */
DB_USERNAME=root   /* Use your host Name */
DB_PASSWORD=

CACHE_DRIVER=file
SESSION_DRIVER=file
person Hola    schedule 25.02.2016

Отредактируйте файл .env и обновите его правильно.

DB_HOST=127.0.0.1
DB_DATABASE=YOUR DB NAME
DB_USERNAME=YOUR DB USER NAME
DB_PASSWORD= YOUR DB PASSWORD

используйте 127.0.0.1 вместо localhost..

person HM Nayem    schedule 31.10.2017

В вашем php.ini файле раскомментируйте

;extension=php_pdo_mysql.dll

и перезапустите сервер апача.

person Yaroslav Georgitsa    schedule 14.02.2016