【问题标题】:Symfony PDO exception could not find driverSymfony PDO 异常找不到驱动程序
【发布时间】:2019-07-01 20:28:27
【问题描述】:

我知道已经有人问过这个问题,但我找不到适合我的答案。

我在 Linux 上,我用 composer 创建了一个 symfony 4 项目,我想安装 EasyBundle admin。

一切正常,但是当我制作php bin/console server:run 并转到地址链接,并将/admin 放在末尾以转到页面时,出现错误:

“在模板的渲染过程中抛出了异常(“驱动程序中发生异常:找不到驱动程序”)。”

我搜索了一整天,我尝试了所有方法,但我无法成功。

【问题讨论】:

  • 你的数据库好像没有配置好
  • 我不知道,我在配置服务器网络等方面根本不是专业人士。
  • 我想我没有数据库,或者如果我有,我不知道在哪里以及如何配置它

标签: php database symfony database-connection


【解决方案1】:

安装mysql。然后做

bin/console doctrine:database:create

然后

bin/console doctrine:schema:update --force

【讨论】:

  • 我看到了这个错误,我试过了,当我让 sudo yum install php-mysql 时,它说:最后元数据过期检查:1:39:24 前,2019 年 2 月 7 日星期四 04:02:欧洲中部时间下午 55 点。参数不匹配:php-mysql 错误:无法找到匹配项当我想用 symfony 创建数据库时,同样的问题,找不到 pdo 驱动程序
【解决方案2】:

在启动您的网络应用之前,第一件事是设置适当的环境。

在您的情况下,您需要设置 LAMP 或 LEMP 堆栈。

根据您的 linux 发行版,可能会有不同的操作。这种操作的细节不在这个问题的范围内。

【讨论】:

  • 我知道,但我不知道我必须做什么才能拥有合适的环境
【解决方案3】:

为了运行新建立的 Symfony 项目,您应该做一些事情。

首先,您必须在您的机器上设置一个数据库管理系统。尽管其他人建议使用 MySQL,但我建议从 sqlite3 开始。设置更简单,非常适合开发目的。

在您的机器上安装sqlite3。如果你有一个基于 debian 的发行版,你可以这样做:

sudo apt install sqlite3 php-sqlite3

或使用包管理器。

安装成功后需要修改两个文件:

.env

找到以下行:

# DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name

如果没有注释,请注释并在下面添加以下行:

DATABASE_URL="sqlite:///%kernel.project_dir%/var/app.db"

config/packages/doctrine.yaml

此文件应如下所示:

parameters:
    # Adds a fallback DATABASE_URL if the env var is not set.
    # This allows you to run cache:warmup even if your
    # environment variables are not available yet.
    # You should not need to change this value.
    env(DATABASE_URL): ''

doctrine:
    dbal:
        # configure these for your database server
        driver: 'pdo_sqlite'
        server_version: '3'
        charset: utf8mb4
        default_table_options:
            charset: utf8mb4
            collate: utf8mb4_unicode_ci

        url: '%env(resolve:DATABASE_URL)%'
        types:
            json: Sonata\Doctrine\Types\JsonType
    orm:
        auto_generate_proxy_classes: '%kernel.debug%'
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        mappings:
            App:
                is_bundle: false
                type: annotation
                dir: '%kernel.project_dir%/src/Entity'
                prefix: 'App\Entity'
                alias: App

最重要的部分是doctrine.dbaldoctrine.orm 部分最终可能在您的项目中有所不同。本质是设置driver: 'pdo_sqlite'server_version: '3'

现在你可以按照@goto 的回答来创建你的数据库了。

在命令行上,您可以使用以下命令进行检查:

sqlite3 var/app.db

发出命令.tables 并且应该列出表。

【讨论】:

    【解决方案4】:

    我在使用 XAMPP 的 Windows 上遇到了同样的问题,因为在 .env 中我添加了错误的 MySQL 端口,而不是:

    DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7"

    我写道: DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3366/db_name?serverVersion=5.7"

    当我将其更正为: DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7"

    我能够运行: php bin/控制台原则:数据库:创建

    我希望它可以帮助犯同样错误的人。

    【讨论】:

      猜你喜欢
      • 2012-12-09
      • 2012-07-10
      • 2021-12-03
      • 2021-05-02
      • 2021-06-12
      • 2019-09-07
      • 2020-09-23
      相关资源
      最近更新 更多