【问题标题】:laravel and phpunit: could not find driver (SQL: PRAGMA foreign_keys = ON;)laravel 和 phpunit: 找不到驱动程序 (SQL: PRAGMA foreign_keys = ON;)
【发布时间】:2021-01-30 12:07:31
【问题描述】:

我已经用 phpunit 运行了我的 laravel 应用程序。 一切都很好,直到我再次运行测试时出现此错误。

Illuminate\Database\QueryException: could not find driver (SQL: PRAGMA foreign_keys = ON;)

Caused by
PDOException: could not find driver

这是我的 phpunit.xml 文件:

<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
     bootstrap="vendor/autoload.php"
     colors="true">
<testsuites>
    <testsuite name="Unit">
        <directory suffix="Test.php">./tests/Unit</directory>
    </testsuite>
    <testsuite name="Feature">
        <directory suffix="Test.php">./tests/Feature</directory>
    </testsuite>
</testsuites>
<filter>
    <whitelist processUncoveredFilesFromWhitelist="true">
        <directory suffix=".php">./app</directory>
    </whitelist>
</filter>
<php>
    <server name="APP_ENV" value="testing"/>
    <server name="BCRYPT_ROUNDS" value="4"/>
    <server name="CACHE_DRIVER" value="array"/>
    <server name="DB_CONNECTION" value="sqlite"/>
    <server name="DB_DATABASE" value=":memory:"/>
    <server name="MAIL_MAILER" value="array"/>
    <server name="QUEUE_CONNECTION" value="sync"/>
    <server name="SESSION_DRIVER" value="array"/>
    <server name="TELESCOPE_ENABLED" value="false"/>
</php>
OS: Windows 10 | php version: PHP 7.4.11 | sqlite version: SQLite version 3.19.1

有人在 laravel 6 和 phpunit 中遇到过这个错误吗?

【问题讨论】:

  • 您能发布更多信息吗?就像您的 phpunit.xml 文件一样。你在用 sqlite 吗?
  • 是的,我使用 sqlite 和数据库值作为内存。请参考我更新的帖子@JonathanMartins
  • 你的操作系统是什么?什么是PHP版本?你有安装 sqlite 驱动吗?
  • 是的,我已经安装了 sqlite。根据您的问题更新了我的帖子。

标签: laravel phpunit


【解决方案1】:

这实际上是在我在 laragon 升级我的 php 版本之后发生的。解决方案是在 laragon 的 php 扩展上启用 pdo_sqlite。而已。这个答案在这里找到https://laracasts.com/discuss/channels/general-discussion/phpunit-sqlite-error-after-updating-laragon-pdoexception-could-not-find-driver

【讨论】:

  • 很高兴您找到解决问题的方法。
  • 是的,很高兴找到解决方案
【解决方案2】:

如果您在 Laragon 中有多个版本的 PHP,您仍然会看到错误。 解决方案是在所有版本上启用 pdo_sqlite 扩展。 原因是 Laragon 有自己的 PHP,而 Laravel 使用的是系统 PHP,你可能不知道哪个是系统 PHP 版本。

【讨论】:

    【解决方案3】:

    只需对 php.ini 文件进行以下更改

    extension_dir = "<php installation directory>/php-7.4.3/ext"
    extension=php_pdo_sqlite.dll
    extension=php_sqlite3.dll
    sqlite3.extension_dir = "<php installation directory>/php-7.4.3/ext"
    

    【讨论】:

      【解决方案4】:

      发生这种情况是因为未启用 PDO Sqlite。 要在 Laragon 中启用它,只需打开 Laragon 点击​​菜单 > PHP > Extensions > pdo_sqlite 就是这样。

      如果您不使用 Laragon,解决方案可能会有所不同。谢谢

      【讨论】:

        【解决方案5】:

        如果你遇到这个问题

        (找不到驱动程序(SQL:PRAGMA foreign_keys = ON;))

        你可以在你的 Ubuntu 系统上简单地运行下面的命令

        sudo apt-get install php-sqlite3
        

        我想它会帮助你..谢谢

        【讨论】:

        • 非常感谢。它对我有用。
        • 它就像一个魅力!非常感谢。
        【解决方案6】:

        对于那些使用窗户的人;

        导航到 php.ini 文件(-C:\php\php.ini)

        启用以下功能:

        ;extension=pdo_sqlite by removing the /;/ should look like this extension=pdo_sqlite
        
        ;extension=sqlite3 should be extension=sqlite3 without the ; symbol
        

        【讨论】:

          【解决方案7】:

          PHP 8.1

          sudo apt install php8.1-sqlite3

          注意它需要 8.1 部分!

          【讨论】:

            猜你喜欢
            • 2020-05-21
            • 2015-08-31
            • 2017-02-13
            • 2021-11-14
            • 1970-01-01
            • 2014-06-08
            • 2023-03-06
            • 2020-09-11
            • 2016-05-16
            相关资源
            最近更新 更多