【发布时间】:2016-05-08 21:06:10
【问题描述】:
我目前正在关注 CMF 文档来创建一个项目:https://symfony.com/doc/master/cmf/tutorial/introduction.html
当我继续教程时,我喜欢将项目推送到 heroku。但是当我需要连接数据库时遇到了问题。
比我找到这个来源:https://coderwall.com/p/qpitzq/deploing-symfony-project-using-mysql-to-heroku
这有帮助,但我还需要配置“phpcr_backend”参数。我将它们设置在控制台上:
heroku config:set phpcr_backend=[type:doctrinedbal,connection:default]
or
heroku config:set phpcr_backend=(type:doctrinedbal,connection:default)
or
heroku config:set phpcr_backend={type:doctrinedbal,connection:default}
or
heroku config:set phpcr_backend=type:doctrinedbal,connection:default
heroku config:set phpcr_workspace=default
heroku config:set phpcr_user=admin
heroku config:set phpcr_pass=admin
并更新parameters_production.php文件:
<?php
$db = parse_url(getenv('...'));
...
$container->setParameter('phpcr_backend', getenv('phpcr_backend'));
$container->setParameter('phpcr_workspace', getenv('phpcr_workspace'));
$container->setParameter('phpcr_user', getenv('phpcr_user'));
$container->setParameter('phpcr_pass', getenv('phpcr_pass'));
现在,当我部署项目时出现此错误:
[Symfony\Component\Config\Definition\Exception\InvalidTypeException]
Invalid type for path "doctrine_phpcr.session.sessions.default.backend". Expected array, but got boolean
我不确定,我将这些参数设置为正确的语法。目前这就是问题所在。
编辑:
我在 config.yml 文件中硬编码了教义_phpcr 参数:
doctrine_phpcr:
# configure the PHPCR session
session:
backend: { type: doctrinedbal, connection: default}
workspace: default
username: admin
password: admin
# enable the ODM layer
odm:
auto_mapping: true
auto_generate_proxy_classes: "%kernel.debug%"
目前的错误是
PHP Fatal error: Cannot use 'String' as class name as it is reserved in /tmp/build_4d5c173733f27d9fb1cec775f9522884/ersah123-cmf-testing-118c5df/vendor/doctrine/phpcr-odm/lib/Doctrine/ODM/PHPCR/Mapping/Annotations/String.php on line 32
编辑 2:
通过更改 composer.json 中的 php 版本,修复了最后一个问题。现在,当我部署项目构建成功时。但是还有一个问题:
heroku run php bin/console doctrine:database:create
[Doctrine\DBAL\Exception\ConnectionException]
An exception occured in driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known
您的帮助将不胜感激
【问题讨论】:
-
更新到 Doctrine PHPCR ODM 1.3 以修复 PHP 7 兼容性。
-
我在 composer.json 中更新了 "doctrine/phpcr-odm": "~1.3"。数据库上仍然存在同样的错误:创建命令。
-
您如何以及在何处设置数据库连接?您应该使用 IncenteevParameterHandler 将
DATABASE_URL(或者如果您使用JAWSDB_DATABASE_URL或CLEARDB_DATABASE_URL)映射到database_url参数并将其交给 DBAL,就像这个 PR 一样:github.com/symfony/symfony-demo/pull/297 -
这是关系数据库的 DBAL 错误,而不是 ODM。
-
你可能还想
heroku config:set SYMFONY_ENV=prod。
标签: symfony heroku symfony-cmf