1

如何解决这个 symfony 错误:

C:\inetpub\wwwroot\project\trunk\preprod\signup>php symfony doctrine:build-schema --trace
>> doctrine  generating yaml schema from database


  [sfException]
  Unknown relation alias table_name


Exception trace:
  at C:\inetpub\wwwroot\project\trunk\preprod\signup\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\cli\sfDoctrineCli.class.php:69
 sfDoctrineCli->notifyException at C:\inetpub\wwwroot\ project\trunk\preprod\signup\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\ven
dor\doctrine\Doctrine\Cli.php:93
 Doctrine_Cli->run at C:\inetpub\wwwroot\project\trunk\preprod\signup\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\task\sfDoctrineB
aseTask.class.php:112
 sfDoctrineBaseTask->callDoctrineCli at C:\inetpub\wwwroot\project\trunk\preprod\signup\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\li
b\task\sfDoctrineBuildSchemaTask.class.php:57
 sfDoctrineBuildSchemaTask->execute at C:\inetpub\wwwroot\project\trunk\preprod\signup\lib\vendor\symfony\lib\task\sfBaseTask.class.php:63

 sfBaseTask->doRun at C:\inetpub\wwwroot\project\trunk\preprod\signup\lib\vendor\symfony\lib\task\sfTask.class.php:77
 sfTask->runFromCLI at C:\inetpub\wwwroot\ project\trunk\preprod\signup\lib\vendor\symfony\lib\command\sfSymfonyCommandApplication.class.ph
p:76
 sfSymfonyCommandApplication->run at C:\inetpub\wwwroot\project\trunk\preprod\signup\lib\vendor\symfony\lib\command\cli.php:20
 include at C:\inetpub\wwwroot\project\trunk\preprod\signup\symfony:14
4

3 回答 3

2

这是模型和缓存问题(重置所有配置并擦除模型和数据文件)

rm config/doctrine/schema.yml
rm -r cache/*
rm -r data/*
rm -r lib/model/doctrine/base

symfony cc

我找到了第二个响应,使用 builder.php 补丁让 symfony 1.2 中的学说对象获取器也抛出了这个错误。

于 2010-01-20T11:35:48.257 回答
1

那些使用 Symfony 1.4 的人会很高兴知道有一项任务是清理过时的学说模型。“./symfony dictionary:clean” 将摆脱那些讨厌的“那个模型不再存在的问题”。

于 2010-04-20T00:55:11.063 回答
0

您的一个表似乎引用了另一个名为“table_name”的表(除非 Doctrine 的错误输出替换存在严重错误)。检查所有表上的关系以找到导致此问题的罪魁祸首,并在其无效时删除关系(您实际上是否有一个名为“table_name”的表?)以解决此问题。

如果您有很多表,您可以尝试将整个数据库复制到临时测试数据库中,然后删除一半表并再次运行生成命令。如果您没有收到错误,您就知道表块不是问题,因此删除现有表并恢复另一半。如果仍然发生相同的错误,则罪魁祸首现在在当前块中。继续减半,直到只剩下一张表出错,并且您将找到错误源。

如果您仍然无法找到问题的确切原因,您可以提供 SQL 中问题表的结构以及您正在使用的 Doctrine 版本。

于 2010-01-20T09:42:20.633 回答