php - 为什么yii2在我没有配置的时候会尝试连接mysql?

标签 php sqlite yii yii2

这就是我所做的:

  • 我下载了yii2高级模板。
  • 跑 php init。
  • 配置了每个 main-local.php 文件
  • 环境/开发/公共(public)/配置
  • 环境/产品/通用/配置
  • 常见/配置

  • 我将以下内容添加到“组件”中
    'db' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'sqlite:/path/to/sqlitedbs/yayr.sq3',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
    ],
    

    我按照自述文件中的说明配置了 apache vhost。

    运行yii migrate在配置的位置创建了 sqlite 数据库文件,没有错误。

    什么中断是当我去前端应用程序并尝试提交注册表单时,它给了我这个错误:
    Exception
    Database Exception – yii\db\Exception
    
    SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: NO)
    ↵
    Caused by: PDOException
    
    SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: NO)
    
    in /home/johnsmith/dev/test/yayr/vendor/yiisoft/yii2/db/Connection.php at line 579
    

    可以看到完整的堆栈跟踪:http://pastebin.com/KEKH1zbM

    我已经使用我的 IDE 搜索 mysql dsn 存在的每个位置。唯一的地方是/tests/codeception/config/config.php不应通过提交表单来调用它。为了仔细检查,我注释掉了配置,但没有帮助。

    我也试过设置'driverName' => 'sqlite',在配置中,但这没有任何区别。也没有注释掉用户名、密码或字符集参数。

    堆栈跟踪引用的函数似乎都没有手动调用 MySQL。他们都在寻找配置好的dsn。

    那么,为什么 Yii 认为它甚至可以尝试连接 MySQL 呢? ActiveRecord 不是将所有 SQL 都抽象出来,这样我使用 MySQL 还是 sqlite 就无关紧要了?

    我该如何解决这个问题?使用 sqlite 将使初始开发变得容易得多。

    谢谢!

    最佳答案

    Yii2高级模板基础知识

  • 您拥有包含实际配置文件的环境文件夹
  • 前端和后端文件夹保存这些“本地”文件的副本,具体取决于您选择的环境,它们是从 dev 或 prod
  • 复制的

    这是什么意思?如果您对环境文件夹中的任何文件执行更改,您必须重新初始化您的应用程序。您只需打开控制台,导航到应用程序的基本文件夹并调用 init -命令。然后将询问您想要哪个环境以及要覆盖哪些文件。

    之后,您应该会在前端和后端文件夹中看到您的更改。这背后的想法是防止配置文件中出现 if/else 结构并拥有一个干净的应用程序。顺便说一句:index.php在网络文件夹中以相同的方式复制。这样,您甚至可以自定义它……以及应用程序最初加载的方式。

    回到您的问题

    对我来说,您似乎更改了 environments/.../local-... 中的设置。 -configfile,这是正确的......但是没有重新启动应用程序。这样,前端和后端中的配置文件仍然包含您的旧设置。

    高级模板文档

    一切都很好地记录在这里:

    https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/README.md

    关于php - 为什么yii2在我没有配置的时候会尝试连接mysql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27160694/

    相关文章:

    java - NullPointerException:尝试在空对象引用 [Database Sqlite] 上调用虚拟方法

    php - 如何在 "if"条件下检查 php 中的窗口关闭事件?

    bind_result 上的 php 空值

    php - 亚马逊产品 API 和多个潜在类别的准确性

    yii - 无法使用 yii 的 passwordhelper 验证散列密码

    url - 如何将 URL ""替换为 "-"或 "_"?

    php - 当表为空时 Yii 查询不返回 null

    php - Magento:当我尝试在主页上显示最畅销的产品时,$this->getAddToCartUrl($product) 不起作用

    java - Android创建数据库的权限

    android - 从 SQLite 中检索单个数据并在 TextView 中显示(Android 开发)