在 yii2 中迁移时出现异常 'could not find driver'

Exception 'could not find driver' while migration in yii2

这是我的堆栈跟踪:

  Exception 'yii\db\Exception' with message 'could not find driver'

in /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Connection.php:534

#0 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Connection.php(836): yii\db\Connection->open()
        #1 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Connection.php(823): yii\db\Connection->getMasterPdo()
        #2 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Command.php(208): yii\db\Connection->getSlavePdo()
        #3 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Command.php(816): yii\db\Command->prepare(true)
        #4 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Command.php(350): yii\db\Command->queryInternal('fetchAll', NULL)
        #5 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/mysql/Schema.php(198): yii\db\Command->queryAll()
        #6 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/mysql/Schema.php(97): yii\db\mysql\Schema->findColumns(Object(yii\db\TableSchema))
        #7 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Schema.php(140): yii\db\mysql\Schema->loadTableSchema('migration')
        #8 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/controllers/MigrateController.php(121): yii\db\Schema->getTableSchema('{{%migration}}', true)
        #9 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(610): yii\console\controllers\MigrateController->getMigrationHistory(NULL)
        #10 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(102): yii\console\controllers\BaseMigrateController->getNewMigrations()
        #11 [internal function]: yii\console\controllers\BaseMigrateController->actionUp(0)
        #12 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/base/InlineAction.php(55): call_user_func_array(Array, Array)
        #13 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/base/Controller.php(151): yii\base\InlineAction->runWithParams(Array)
        #14 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/Controller.php(91): yii\base\Controller->runAction('', Array)
        #15 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/base/Module.php(455): yii\console\Controller->runAction('', Array)
        #16 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/Application.php(161): yii\base\Module->runAction('migrate', Array)
        #17 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/Application.php(137): yii\console\Application->runAction('migrate', Array)
        #18 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/base/Application.php(375): yii\console\Application->handleRequest(Object(yii\console\Request))
        #19 /opt/lampp/htdocs/advanced/yii(31): yii\base\Application->run()
        #20 {main}

我是yii2的新手。我在 advaced/common/config/main-local.php 中添加了数据库名称、用户名。使用 xampp 网络服务器和 php 的版本是 5.6.8 并且还启用了 PDO。

这是我的数据库配置。

'db' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=yii2advanced',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
    ],

Yii2

上找到这个

"Most likely it is your system config. If you are using packages like MAMP, XAMPP or other, you may need to change "localhost" to "127.0.0.1" in your db.php configuration file. Also if you are on Linux you may need to install some other additional packages like php5-mysql and stuff like that."

我有完全相同的错误。搜索后,我发现了巴西人关于类似问题的评论,原因是他的计算机中安装了两个不同的 php 版本。

我检查了 /opt/lampp/bin 目录,发现了两个不同的 php 版本,一个是普通的 "php" 另一个 "php-5.6.8",所以我决定 [=24] =] 第二个版本,它有效!

test@pctest:~$/opt/lampp/bin/php-5.6.8/opt/lampp/htdocs/advanced/yii迁移

我在 Yii2(高级)迁移期间遇到过类似情况(Xampp in Ubuntu 14.04 和 PHP)

这是我收到的消息:

Exception 'yii\db\Exception' with message 'could not find driver'

所以在谷歌搜索和阅读这个线程和其他线程之后,我发现这可能是可能的问题

PHP 扩展 "pdo_mysql" 被禁用或根本没有安装

并在我的终端上尝试了这个:

php -m

发现模块不存在后...

sudo apt-get install php5-gd php5-mysql

快速安装后必须重新启动服务...

sudo /opt/lampp/lampp restart

..最后(重试迁移)

php yii migrate

迁移成功。

希望您觉得它有用并为他人所用。

我在询问 ubuntu 时找到了它,但我无法添加 link 或代码,因为这是我的第一个 post。

link: http://www.yiiframework.com/forum/index.php/topic/49450-error-on-migrate-command-advanced-yii2-app/

我有同样的错误,但我使用的是 Fedora 25 和 Apache,而不是 xampp,对我来说 'dnf install -y php-mysqlnd' 修复了这个错误,所以你可能缺少扩展。

我通过像这样更改 PHP 路径解决了这个问题

  1. 转到 "My Computer" 右键单击​​并单击 "Properties"
  2. 点击"Advanced system settings"
  3. 点击"Environment Variables"
  4. 在系统变量中找到"Path",双击
  5. 找到您的 PHP 路径,如果您还没有,请添加它,例如 "D:\xampp\php"
  6. 单击“确定”并重新启动 Apache 服务器。
  7. 到此为止,我可以迁移数据库了。

就我而言:

在php\php.ini

中添加extension=php_pdo_mysql.dll

就我而言(Ubuntu):

sudo apt-get install php-mysql  
sudo service apache2 restart

我重新配置了 php,添加了这个标志:

--with-pdo-mysql

我正在使用 LAMP,这对我有用。