这就是我所做的:
我将以下内容添加到“组件”中
'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高级模板基础知识
这是什么意思?如果您对环境文件夹中的任何文件执行更改,您必须重新初始化您的应用程序。您只需打开控制台,导航到应用程序的基本文件夹并调用
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/