【问题标题】:how to resolve symfony doctrine:build-schema error (Unknown relation alias table_name)如何解决 symfony 学说:构建模式错误(未知关系别名 table_name)
【发布时间】:2010-12-10 00:25:29
【问题描述】:

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

【问题讨论】:

  • 你的 schema.yml 是什么样的?
  • 作者会看这张票来提供信息吗?或者至少只是说,解决了,可以关闭了?
  • 不,它没有解决,schema.yml 不是根本问题,而学说:build-schema 构建这个文件并且在错误消息之前没有使用这个文件

标签: php symfony1 doctrine schema yaml


【解决方案1】:

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

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

symfony cc

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多