Sylius 数据库凭据未更新
Sylius Database Credentials Not Updating
我是 Sylius 的新手,第一次在 MAMP Pro 上配置站点。我通过 Composer 安装了 Sylius,但意识到我在安装过程中提供的数据库凭据不正确。在此之后,我根据文档进入 app/config/parameters.yml,并更新了以下凭据:
database_driver: pdo_mysql
database_host: localhost
database_port: null
database_name: mydb
database_user: root
database_password: root
每次我尝试访问该站点时,都会抛出 500 错误。检查我的日志后,每次我尝试访问它时,我都会收到有关拒绝访问数据库的错误消息:
[15-Aug-2016 13:49:34 America/New_York] PHP Fatal error: Uncaught PDOException: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) in vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43
奇怪的是错误日志还显示:
vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php(41): Doctrine\DBAL\Driver\PDOConnection->__construct('mysql:host=127....', 'root', 'secret', Array)
这些是旧凭据(注意密码 'secret' 而不是 'root',主机“127.0.0.1”而不是 'localhost'。看来尽管更新了我的 parameters.yml 使用正确的凭据,Sylius 不会停止尝试连接我在设置期间使用的原始凭据。是否有另一个文件可以存储在其中未提及的文件文档?它可能正在缓存旧凭据,需要一些清理吗?我对这里发生的事情一头雾水。
编辑:
我也试过用正确的凭据更新 app/config/parameters.yml.dist,但没有效果。
编辑 2:
我已在整个项目中搜索我的旧数据库名称,并将每个实例更新为新数据库名称。没有引用旧数据库名称的文件。然后我尝试 运行:
php app/console cache:clear --env=dev --no-debug
它抛出错误:
[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[08006][7]致命:数据库"old_database_name"不存在
尽管 old_database_name 未在任何文件中引用。然后,如果我在 运行 清除缓存后搜索 old_database_name,它每次都会再次用旧名称覆盖 app/cache/de_/ap_DevProjectContainer.php 中的新数据库名称。在我覆盖它的每个实例之后,我什至无法弄清楚它从哪里获取旧数据库名称。这里发生了什么??
在这种情况下,old_database_name 与我的新数据库名称相同,只是它包含后缀“_dev”。我现在意识到这是因为我在开发环境中。我发现似乎没有任何简单的方法可以删除此后缀,因此我将继续使用它。仍然想知道如何删除它,但现在我已经回答了我自己的问题。
默认的 Sylius 配置使用不同的数据库进行生产和开发。在您的情况下,这将是来自 prod 的 sylius
,对于开发环境,_dev
附加到数据库名称。这是预期的行为,而不是错误。
您可以在app/config/config_dev.yml
末尾找到配置。如果删除以下行,两个环境将使用相同的数据库。
doctrine:
dbal:
dbname: %sylius.database.name%_dev
我是 Sylius 的新手,第一次在 MAMP Pro 上配置站点。我通过 Composer 安装了 Sylius,但意识到我在安装过程中提供的数据库凭据不正确。在此之后,我根据文档进入 app/config/parameters.yml,并更新了以下凭据:
database_driver: pdo_mysql
database_host: localhost
database_port: null
database_name: mydb
database_user: root
database_password: root
每次我尝试访问该站点时,都会抛出 500 错误。检查我的日志后,每次我尝试访问它时,我都会收到有关拒绝访问数据库的错误消息:
[15-Aug-2016 13:49:34 America/New_York] PHP Fatal error: Uncaught PDOException: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) in vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43
奇怪的是错误日志还显示:
vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php(41): Doctrine\DBAL\Driver\PDOConnection->__construct('mysql:host=127....', 'root', 'secret', Array)
这些是旧凭据(注意密码 'secret' 而不是 'root',主机“127.0.0.1”而不是 'localhost'。看来尽管更新了我的 parameters.yml 使用正确的凭据,Sylius 不会停止尝试连接我在设置期间使用的原始凭据。是否有另一个文件可以存储在其中未提及的文件文档?它可能正在缓存旧凭据,需要一些清理吗?我对这里发生的事情一头雾水。
编辑:
我也试过用正确的凭据更新 app/config/parameters.yml.dist,但没有效果。
编辑 2:
我已在整个项目中搜索我的旧数据库名称,并将每个实例更新为新数据库名称。没有引用旧数据库名称的文件。然后我尝试 运行:
php app/console cache:clear --env=dev --no-debug
它抛出错误:
[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[08006][7]致命:数据库"old_database_name"不存在
尽管 old_database_name 未在任何文件中引用。然后,如果我在 运行 清除缓存后搜索 old_database_name,它每次都会再次用旧名称覆盖 app/cache/de_/ap_DevProjectContainer.php 中的新数据库名称。在我覆盖它的每个实例之后,我什至无法弄清楚它从哪里获取旧数据库名称。这里发生了什么??
在这种情况下,old_database_name 与我的新数据库名称相同,只是它包含后缀“_dev”。我现在意识到这是因为我在开发环境中。我发现似乎没有任何简单的方法可以删除此后缀,因此我将继续使用它。仍然想知道如何删除它,但现在我已经回答了我自己的问题。
默认的 Sylius 配置使用不同的数据库进行生产和开发。在您的情况下,这将是来自 prod 的 sylius
,对于开发环境,_dev
附加到数据库名称。这是预期的行为,而不是错误。
您可以在app/config/config_dev.yml
末尾找到配置。如果删除以下行,两个环境将使用相同的数据库。
doctrine:
dbal:
dbname: %sylius.database.name%_dev