Как решить доктрину Symfony: ошибка схемы сборки (Неизвестный псевдоним отношения имя_таблицы)
Вопрос
как устранить эту ошибку 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 нет ничего ужасного). Проверьте отношения во всех ваших таблицах, чтобы найти виновника, вызывающего это, и удалите отношение, если оно недопустимо (у вас действительно есть таблица с именем 'table_name'?), Чтобы решить эту проблему.
Если у вас много таблиц, вы можете попробовать скопировать всю базу данных во временную тестовую БД, а затем отбросить половину таблиц и снова выполнить команду generate. Если вы не получили сообщение об ошибке, вы знаете, что порция таблиц не является проблемой, поэтому удалите существующие таблицы и восстановите вторую половину. Если та же самая ошибка все еще происходит, преступник теперь находится в пределах текущего чанка. Продолжайте сбрасывать половинки, пока не останется только одна таблица с ошибками, и вы найдете свой источник ошибок.
Если у вас все еще есть проблемы с поиском точной причины проблемы, можете ли вы указать структуру таблицы проблем в SQL, а также с какой версией Doctrine вы работаете.