Php 我还没有将yii2配置为mysql,为什么它要尝试连接到mysql?
这就是我所做的:Php 我还没有将yii2配置为mysql,为什么它要尝试连接到mysql?,php,sqlite,yii,yii2,Php,Sqlite,Yii,Yii2,这就是我所做的: 我下载了yii2高级模板 运行php init 在中配置了每个main-local.php文件 环境/dev/common/config 环境/prod/common/config 公共/配置 我在“组件”中添加了以下内容 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'sqlite:/path/to/sqlitedbs/yayr.sq3', 'username' =>
- 我下载了yii2高级模板
- 运行php init
- 在中配置了每个main-local.php文件
- 环境/dev/common/config
- 环境/prod/common/config
- 公共/配置
'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
可以看到完整的堆栈跟踪:
我使用IDE搜索mysql dsn存在的每个位置。唯一的位置是/tests/codeception/config/config.php
,不应该通过提交表单来调用它。为了再次检查,我注释掉了配置,但没有任何帮助
我还尝试在配置中设置'driverName'=>'sqlite',
,但没有任何区别。也没有注释掉用户名、密码或字符集参数
堆栈跟踪引用的函数似乎都没有手动调用MySQL。他们都在寻找配置好的dsn
那么,为什么我认为它甚至可以尝试连接到MySQL?ActiveRecord不是把所有的SQL都抽象出来,这样我使用的是MySQL还是sqlite就无关紧要了吗
我如何克服这个问题?使用sqlite将使初始开发更加容易
谢谢 在init命令之后 创建一个新数据库并将其添加到common/config/main local.php
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=your-db',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],
在控制台命令中应用yii migrate
它将为应用程序创建工作表Yii2高级模板的基础
- 您拥有包含实际配置文件的environments文件夹
- 前端和后端文件夹保存这些“本地”文件的副本,具体取决于您选择的环境,它们是从dev或prod复制的
init
-命令即可。然后,系统会询问您需要哪种环境以及要覆盖哪些文件
之后,您应该会看到您的更改反映在前端和后端文件夹中。这背后的思想是防止配置文件中的if/else结构,并使应用程序干净。顺便说一句:web文件夹中的index.php
以相同的方式复制。这样,您甚至可以自定义它……因此也可以自定义应用程序最初加载的方式
回到你的问题上来
对我来说,您似乎更改了环境/../local-…
-configfile中的设置,这是正确的…但随后没有重新初始化应用程序。这样,前端和后端中的配置文件仍然包含您的旧设置
高级模板的文档化
这里的所有内容都有很好的记录:
你在<代码>Yii::$app->db->driverName中看到了什么?嗯,我试图将这些信息记录下来,但无法运行syslog函数。我认为存在某种缓存,但据我所知,我已将其关闭,并且没有运行时/缓存目录。不管怎样,我搜索了整个项目,没有设置driverName。如果有帮助的话,关键是我没有使用mysql。完全配置mysql数据库并不能解决我的问题,这是错误的。您应该只更改environments文件夹中的*-本地文件。否则,您将无法达到高级模板的目的,您的更改将在下次执行init命令时被覆盖。