繁体   English   中英

如何解决symfony的问题:build-schema错误(未知关系别名table_name)

[英]how to resolve symfony doctrine:build-schema error (Unknown relation alias table_name)

如何解决这个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

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

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

symfony cc

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

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

您的一个表似乎正在引用另一个名为“ table_name”的表(除非Doctrine的错误输出替换存在严重错误)。 检查所有表上的关系以查找造成此问题的元凶,并删除无效的关系(您实际上有一个名为“ table_name”的表吗?)来解决此问题。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM