PDOException:使用phpunit时找不到驱动程序

2022-08-30 17:30:19

我开始使用laravel 4,我正在尝试开始使用单元测试,这样我就可以让我的生活更轻松。好吧,你们所有人都会猜到,在尝试phpunit测试后,我的开发并没有变得更容易。简单的测试很好,很容易,但是当事情开始变得更加复杂时,它们不会像我一样进行。

问题是我已经进行了简单的测试,但我得到了一些奇怪的错误。我已经阅读了几篇文章并发布了有关此主题的帖子,但没有任何东西可以解决我的问题。我已经安装了,当我打电话给它时,它说我既有PDO又有pdo_mysql。我使用的实际命令是,输出是:PDOException: could not find driverphp5-mysqlphp -mphp -m |grep -i "pdo"

PDO
pdo_mysql

好吧,我试图在浏览器中实际测试PDOException类。为此,我将mysql用户密码更改为不正确的密码,并测试了artisan服务器(使用命令--->调用)中将会发生什么。在浏览器中,一切都像一个魅力一样工作,但是当我尝试在控制台中调用“phpunit”时,结果就不一样了。php artisan servehttp://localhost:8000/

我试图看看Web服务器和cli是否具有不同的配置文件,但它证明这些文件是相同的。我比较的配置文件是:

对于网络服务器

/etc/php5/apache2/conf.d/20-pdo_mysql.ini
/etc/php5/apache2/conf.d/05-opcache.ini
/etc/php5/apache2/conf.d/20-json.ini
/etc/php5/apache2/conf.d/20-mysql.ini
/etc/php5/apache2/conf.d/20-mysqli.ini
/etc/php5/apache2/conf.d/10-pdo.ini
/etc/php5/apache2/conf.d/20-mcrypt.ini
/etc/php5/apache2/conf.d/20-curl.ini
/etc/php5/apache2/php.ini

对于命令行

/etc/php5/cli/conf.d/20-pdo_mysql.ini
/etc/php5/cli/conf.d/05-opcache.ini
/etc/php5/cli/conf.d/20-json.ini
/etc/php5/cli/conf.d/20-mysql.ini
/etc/php5/cli/conf.d/20-mysqli.ini
/etc/php5/cli/conf.d/10-pdo.ini
/etc/php5/cli/conf.d/20-mcrypt.ini
/etc/php5/cli/conf.d/20-curl.ini
/etc/php5/cli/php.ini

为了比较它们,我像这样使用diff命令。diff -s /path/to/file1 /path/to/file2

错误如下所示:

1) ExampleTest::testBasicExample
PDOException: could not find driver

/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:47
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Connectors/SQLiteConnector.php:22
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php:59
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php:47
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php:127
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php:63
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php:167
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php:135
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:366
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:93
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:56
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Console/Command.php:108
/var/www/smlsspd/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:241
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Console/Command.php:96
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Console/Application.php:96
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Foundation/Artisan.php:57
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:208
/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:208
/var/www/smlsspd/app/tests/TestCase.php:70
/var/www/smlsspd/app/tests/TestCase.php:70
/var/www/smlsspd/app/tests/TestCase.php:46
phar:///var/www/smlsspd/phpunit.phar/phpunit/TextUI/Command.php:179
phar:///var/www/smlsspd/phpunit.phar/phpunit/TextUI/Command.php:132

你能给我一个提示或解决这个问题的方法吗?

感谢您抽出宝贵时间:)


答案 1

Laravel似乎使用SQLite作为测试数据库。请参阅第 2 行的回溯跟踪:

/var/www/smlsspd/vendor/laravel/framework/src/Illuminate/Database/Connectors/SQLiteConnector.php:22

但这似乎没有安装在您的系统上。所以我认为你需要安装SQLite驱动程序。


答案 2

如果你使用sqlite进行测试,你将需要php sqlite驱动程序

对于 Ubuntu 14.04

sudo apt-get install php5-sqlite
sudo service apache2 restart

在 ubuntu 16.04 中没有php5-sqlite

sudo apt-get install php7.0-sqlite
sudo service apache2 restart

推荐