简体   繁体   English

在 yii2 中迁移时出现异常“找不到驱动程序”

[英]Exception 'could not find driver' while migration in yii2

This my stack trace:这是我的堆栈跟踪:

  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}

I am new to yii2.我是 yii2 的新手。 I have added database name,username in advaced/common/config/main-local.php .我在advaced/common/config/main-local.php添加了数据库名称、用户名。 Using xampp webserver and version of php is 5.6.8 and PDO is also enabled.使用 xampp 网络服务器,php 版本为 5.6.8,并且还启用了 PDO。

This is my db configuration.这是我的数据库配置。

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

Found this on Yii2Yii2上找到这个

"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." “很可能是您的系统配置。如果您使用 MAMP、XAMPP 或其他软件包,您可能需要在 db.php 配置文件中将“localhost”更改为“127.0.0.1”。此外,如果您使用的是 Linux,可能需要安装一些其他附加软件包,例如 php5-mysql 之类的东西。”

I had a similar situation during Yii2 (Advanced) migration (Xampp in Ubuntu 14.04 and PHP)我在 Yii2(高级)迁移(Ubuntu 14.04 和 PHP 中的 Xampp)期间遇到了类似的情况

This is the message i've got:这是我得到的消息:

Exception 'yii\\db\\Exception' with message 'could not find driver'带有消息“找不到驱动程序”的异常“yii\\db\\Exception”

So after googling and reading this thread and others I found out that could be the possible problem因此,在谷歌搜索并阅读此线程和其他线程后,我发现这可能是可能的问题

the PHP extension "pdo_mysql" was disabled or not installed at all PHP 扩展“pdo_mysql”被禁用或根本没有安装

and tried this at my terminal:并在我的终端上尝试了这个:

php -m

after realize that the module was not there...在意识到模块不存在之后......

sudo apt-get install php5-gd php5-mysql

and after a quick install the service must be re-started...快速安装后,必须重新启动服务...

sudo /opt/lampp/lampp restart

....finally (retry migration) ....最后(重试迁移)

php yii migrate

Migrated up successfully.迁移成功。

Hope you find it useful & work for others.希望你觉得它有用并为他人工作。

I found it at ask ubuntu but i'm unable to add a link or code, since this is my first post.我在 ask ubuntu 上找到了它,但我无法添加链接或代码,因为这是我的第一篇文章。

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

In my case (on Ubuntu):就我而言(在 Ubuntu 上):

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

I had exactly the same error.我有完全相同的错误。 Searching, I found a Brazilian comment regarding a similar problem caused because he had two different php version installed in his computer.搜索,我发现了一个巴西人的评论,因为他在他的计算机上安装了两个不同的 php 版本而引起的类似问题。

I checked the /opt/lampp/bin directory and I found two different php versions, one just plain "php" and the other "php-5.6.8", so I decided to run the second version, and it works!我检查了 /opt/lampp/bin 目录,我发现了两个不同的 php 版本,一个只是简单的“php”,另一个是“php-5.6.8”,所以我决定运行第二个版本,它工作正常!

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

in my case:就我而言:

add extension=php_pdo_mysql.dll in php\\php.ini在 php\\php.ini 中添加extension=php_pdo_mysql.dll

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

I solved this problem by changing PHP path like this我通过像这样更改 PHP 路径解决了这个问题

  1. Go to "My Computer" right click and click "Properties"转到“我的电脑”右键单击并单击“属性”
  2. Click "Advanced system settings"点击“高级系统设置”
  3. Click "Environment Variables"点击“环境变量”
  4. Find the "Path" in System variables, double click it.在系统变量中找到“路径”,双击它。
  5. Find your PHP Path or add it if you not have it yet, like "D:\\xampp\\php"找到您的 PHP 路径,如果您还没有,请添加它,例如“D:\\xampp\\php”
  6. Click OK and restart your Apache server.单击“确定”并重新启动 Apache 服务器。
  7. That's it, I can migrate db then.就是这样,我可以迁移数据库了。

I reconfigure php, add flag我重新配置php,添加标志

--with-pdo-mysql

My situation (LAMP) it`s work for me.我的情况 (LAMP) 它对我有用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM