【发布时间】:2014-11-26 23:32:12
【问题描述】:
这就是我所做的:
- 我下载了 yii2 高级模板。
- 运行 php init。
- 配置了每个 main-local.php 文件
- 环境/dev/common/config
- environments/prod/common/config
- 常见/配置
我在“组件”中添加了以下内容
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'sqlite:/path/to/sqlitedbs/yayr.sq3',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],
我按照自述文件中的说明配置了 apache 虚拟主机。
运行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 将使初始开发变得容易得多。
谢谢!
【问题讨论】:
-
你在
Yii::$app->db->driverName看到了什么? -
好吧,我试图将这些信息记录下来,但无法运行 syslog 功能。我认为有某种缓存,但据我所知,我已将其关闭,并且没有运行时/缓存目录。无论如何,我搜索了整个项目,并且没有在任何地方设置 driverName。如果有帮助的话。