Я следую документации почти дословно, за исключением двух корректировок, которые я считаю исправлениями.
Первая корректировка: я исключаю лишнюю DIRECTORY_SEPARATOR
в system/application/doctrine.php
:
//this produces "...system/application//fixtures"
$config = array('data_fixtures_path' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '/fixtures',
//Replaced with:
$config = array('data_fixtures_path' => dirname(__FILE__) . DIRECTORY_SEPARATOR . 'fixtures',
Полученные пути выглядят правильными.
Вторая настройка: Сгенерированные модели (например, models/User.php
), похоже, не загружают базовые модели, которые расширяют Doctrine_Record
, поэтомуЯ добавляю явный вызов require()
к каждой модели следующим образом:
require('generated/BaseUser.php');
class User extends BaseUser { ... }
Итак, моя текущая проблема: когда приходит время создавать таблицы в первый раз:
$ ./doctrine build-all-reload
build-all-reload - Are you sure you wish to drop your databases? (y/n)
y
build-all-reload - Successfully dropped database for connection named 'mydb'
build-all-reload - Successfully created database for connection named 'mydb'
build-all-reload - Created tables successfully
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'mydb.user' doesn't exist
Doctrine, кажется, счастливо очищает таблицы, удаляет таблицы, удаляет базы данных и создает базы данных, но я не могу понять, почему он не создает таблицы.В нем четко указано Created tables successfully
, но SHOW TABLES;
возвращает «Таблицы не найдены в базе данных».
Doctrine использует того же пользователя MySQL, что и я, с ALL PRIVILEGES
.
Anyидеи, почему Doctrine не может создавать таблицы?Надеюсь, я просто слепой и / или тупой.
В качестве альтернативы, есть ли способ, которым я могу просто создать файл операторов SQL CREATE на основе моей схемы или моделей yaml, которые я могу запустить самостоятельно для отладки этоговопрос