我正在研究一个Symfony 2项目,该项目针对测试数据库运行PHPUnit 4.6.2进行测试。该测试数据库在配置文件中设置。以下是有关教义配置的部分:
config.yml:
doctrine:
dbal:
default_connection: default
connections:
default:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
orm:
auto_generate_proxy_classes: "%kernel.debug%"
auto_mapping: true
config_dev.yml:
imports:
- { resource: config.yml }
config_test.yml:
imports:
- { resource: config_dev.yml }
doctrine:
dbal:
default_connection: test_sqlite
connections:
test_sqlite:
driver: pdo_sqlite
path: %kernel.cache_dir%/test.db
test_mysql:
driver: pdo_mysql
host: 192.168.56.2
port: null
name: myproject_test
user: root
password: mysupersafetestpassword
charset: UTF8
只要我保持config_test.yml中test_sqlite
的值doctrine.dbal.default_connection
,测试就可以正常运行。但是,当我将此值更改为test_mysql
我的每个测试时,都会收到以下错误消息:
无法将别名“ doctrine.dbal.test_mysql_connection”替换为“ database_connection”。 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ ReplaceAliasByActualDefinitionPass.php:48 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ ReplaceAliasByActualDefinitionPass.php:63 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ ReplaceAliasByActualDefinitionPass.php:63 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ ReplaceAliasByActualDefinitionPass.php:63 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ ReplaceAliasByActualDefinitionPass.php:63 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ ReplaceAliasByActualDefinitionPass.php:63 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ ReplaceAliasByActualDefinitionPass.php:63 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ ReplaceAliasByActualDefinitionPass.php:63 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ ReplaceAliasByActualDefinitionPass.php:63 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ ReplaceAliasByActualDefinitionPass.php:63 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ ReplaceAliasByActualDefinitionPass.php:63 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ ReplaceAliasByActualDefinitionPass.php:63 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ ReplaceAliasByActualDefinitionPass.php:63 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ ReplaceAliasByActualDefinitionPass.php:63 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ ReplaceAliasByActualDefinitionPass.php:63 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ Compiler \ Compiler.php:117 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ DependencyInjection \ ContainerBuilder.php:614 C:\ projects \ myproject \ app \ bootstrap.php.cache:2565 C:\ projects \ myproject \ app \ bootstrap.php.cache:2344 C:\ projects \ myproject \ app \ AppKernel.php:43 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Bundle \ FrameworkBundle \ Test \ KernelTestCase.php:141 C:\ projects \ myproject \ vendor \ symfony \ symfony \ src \ Symfony \ Bundle \ FrameworkBundle \ Test \ WebTestCase.php:33 C:\ projects \ myproject \ src \ mycompany \ myprojectBundle \ Tests \ Controller \ SomeControllerTest.php:23
此错误是什么意思,我需要更改什么才能在MySQL数据库上成功运行测试?
我想这并不是缺少MySQL驱动程序的迹象,因为我可以例如在命令行上对生产数据库很好地运行Symfony命令。
config_test.yml中有一个错字。数据库名称作为参数给出,name
但必须为dbname
。
提供参数时name
,它在YAML文件中指定连接的名称。因此,doctrine.dbal.myproject_test_connection
当Symfony的依赖项注入doctrine.dbal.mysql_test_connection
按配置文件中的指定进行查找时,已命名该连接且找不到该连接。这导致了上面显示的错误。
因此,解决方案是将config_test.yml中的配置更改为以下内容:
test_mysql:
driver: pdo_mysql
host: 192.168.56.2
port: null
dbname: myproject_test
user: root
password: mysupersafetestpassword
charset: UTF8
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句