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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/30155033/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 21:34:56  来源:igfitidea点击:

Exception 'could not find driver' while migration in yii2

phpmysqlpdoyii2yii2-advanced-app

提问by akhil

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. I have added database name,username in advaced/common/config/main-local.php. Using xampp webserver and version of php is 5.6.8 and PDO is also enabled.

我是 yii2 的新手。我在advaced/common/config/main-local.php. 使用 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',
    ],

回答by Dan Cundy

Found this on Yii2

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."

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

回答by Levi Saturnino

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/

回答by Alexis

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

回答by T?kquùss el pro

In my case (on Ubuntu):

就我而言(在 Ubuntu 上):

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

回答by Михаил Никитов

I reconfigure php, add flag

我重新配置php,添加标志

--with-pdo-mysql

My situation (LAMP) it`s work for me.

我的情况 (LAMP) 它对我有用。

回答by Kevin Murda

I had same error, but instead of xampp I used Fedora 25 with Apache, for me 'dnf install -y php-mysqlnd' fixed this error, so you are probably missing extension.

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

回答by user3345269

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"
  6. Click OK and restart your Apache server.
  7. That's it, I can migrate db then.
  1. 转到“我的电脑”右键单击并单击“属性”
  2. 点击“高级系统设置”
  3. 点击“环境变量”
  4. 在系统变量中找到“路径”,双击它。
  5. 找到您的 PHP 路径,如果您还没有,请添加它,例如“D:\xampp\php”
  6. 单击“确定”并重新启动 Apache 服务器。
  7. 就是这样,我可以迁移数据库了。

回答by Lee

in my case:

就我而言:

add extension=php_pdo_mysql.dllin php\php.ini

添加extension=php_pdo_mysql.dll在 php\php.ini