2013-10-08 2 views
0

У меня есть 53 таблицы, и многие из них ссылаются друг на друга с отношениями. Когда я запускаю:Symfony 2.3.5 Создание схемы базы данных из файлов не удается

php app/console doctrine:schema:create 

Получаем ошибку, максимальный уровень вложенности которой достигает 100. Благодаря исследованиям я обнаружил, что на самом деле это мера безопасности от xdebug, чтобы остановить бесконечные циклы. Когда я удаляю это ограничение и снова запускаю команду, php cli перестает работать, и я вынужден закрыть его.

Есть ли способ генерации схемы поэтапно, как сборка структуры базы данных, а затем вернуться и добавить сопоставления и индексы, чтобы они не сработали?

Возможно ли, что я делаю что-то еще неправильно?

MySQL работает, и я могу создавать схемы, которые имеют меньше таблиц/отношений, используя этот же метод.

ОБНОВЛЕНИЕ: Учение: схема: create --dump-sql также висит. Как максимальный уровень вложенности, так и максимальное время выполнения установлены без ограничений. Тем не менее PHP CLI перестает работать:

Problem signature: 
Problem Event Name: APPCRASH 
Application Name: php.exe 
Application Version: 5.3.26.0 
Application Timestamp: 51af706d 
Fault Module Name: ntdll.dll 
Fault Module Version: 6.1.7601.17725 
Fault Module Timestamp: 4ec49b8f 
Exception Code: c00000fd 
Exception Offset: 0002e8fb 
OS Version: 6.1.7601.2.1.0.256.48 
Locale ID: 1033 
Additional Information 1: 8983 
Additional Information 2: 898375922a25a99ebc5721487ed92891 
Additional Information 3: f337 
Additional Information 4: f3378ae3d6023e7f336317eca89ba0b7 

ответ

1

Вы должны увеличить значение xdebug.max_nesting_level (который по умолчанию 100) в вашем php.ini, чтобы обойти ошибку maximum nesting level of 100 reached.

Скорее всего, вы столкнетесь с этой проблемой несколько раз, например, во время разминки кеша - не только при попытке создать схему базы данных. Поэтому увеличьте значение для всех ваших разработок symfony - то же самое касается magento и zf ...

Проверьте настройку max_execution_time и, возможно, проверите с помощью профилировщика (xdebug/xhprof), если команда, кажется, виснет. Это может занять некоторое время, чтобы создать схему, принесите некоторое терпение :)

Нет команды doctrine:schema:create, чтобы «разбить» операцию.

Попробуйте, если doctrine:schema:create --dump-sql висит.

Действительно грязные обходной путь:

Можно определить новое окружение ядра (т.е. step1, step2), создавать различные отображения (все более и более подробно) или вручную настроить лишь немногие из них в первом " шаги "/ среды, регистр/переопределить их в config_stepx.yml и использовать что-то вроде

doctrine:schema:create --env=step1 
doctrine:schema:update --env=step2 
... 

... но это будет действительно бардак.

Из моего опыта команда должна работать даже для больших наборов данных. Я создал схемы для приложений с> 100 таблицами без каких-либо проблем.

+0

Я установил максимальный уровень вложенности в 0 = неограниченно, и поскольку команда запускается из cli, значение max_execution_time по умолчанию равно 0 = без ограничений. Тем не менее php.exe перестает отвечать и терпит неудачу. Использование вашего грязного обходного пути действительно не является жизнеспособным с точки зрения времени, существует слишком много ссылок на таблицы в каждой организации, которые почти позитивны, что вызывает проблему. – Chausser

0

Ответ: мои сущности имели ссылку, связывающую одно к одному на той же самой клавише, которая использовалась в качестве первичного ключа. Таким образом создается бесконечный цикл во время создания.

Не совсем уверен, почему он был там, в первую очередь, некоторые из них были созданы командой обратной инженерии базы данных доктрины.

Смежные вопросы