无法从现有Oracle DB生成实体

时间:2017-05-01 20:19:14

标签: symfony doctrine symfony-2.3

按照symfony的文档从现有数据库创建实体,运行第一个命令时出错:

php bin/console doctrine:mapping:import --force AppBundle yml

错误是:

[Symfony\Component\Debug\Exception\ContextErrorException]
  Warning: file_put_contents(C:\WebApp\src\AppBundle/Resources/config/doctrine/"user".orm.yml): failed to open stream: Invalid argument

我该如何解决?

2 个答案:

答案 0 :(得分:0)

php bin/console doctrine:mapping:import --force AppBundle yml

更改为

php bin/console doctrine:mapping:import AppBundle yml --force 

更多详情:

doctrine:mapping:import命令导入映射信息   来自现有数据库:

php app/console doctrine:mapping:import "MyCustomBundle" xml

您还可以选择指定要从中导入的实体管理器   --em选项:

php app/console doctrine:mapping:import "MyCustomBundle" xml --em=default

如果您不想映射可在数据库中找到的每个实体,请使用    - 过滤选项。它将尝试将目标映射实体与   提供了模式字符串。

php app/console doctrine:mapping:import "MyCustomBundle" xml --filter=MyMatchedEntity

如果要覆盖现有映射文件,请使用--force选项:

php app/console doctrine:mapping:import "MyCustomBundle" xml --force

答案 1 :(得分:0)

看起来User是Oracle数据库中的保留字,因此当我创建表时,Oracle创建了一个名为“user”的表,其中包含双引号。因此,当尝试生成实体时,doctrine无法找到表用户,并在其中找到带有双引号的无效参数“user”。我解决问题的方法是使用除用户之外的其他名称。

希望这有助于未来的人。