Я следую the documentation почти слово в слово, за исключением двух корректировок, которые, я считаю, являются исправлениями.CodeIgniter и Doctrine: Базовый стол или вид не найдены
Первая настройка: Я устранить в system/application/doctrine.php
избыточную DIRECTORY_SEPARATOR
:
//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
доктрина, кажется, счастливо пустые таблицы, удалять таблицы, удалять базы данных, а также создавать базы данных, но я не могу понять, почему он выиграл 't создать таблицы. Он четко говорит Created tables successfully
, но SHOW TABLES;
возвращает «В базе данных нет таблиц».
Doctrine использует тот же пользователь MySQL, что и я, у которого есть ALL PRIVILEGES
.
Любые идеи, почему Doctrine не может создавать таблицы? Надеюсь, я просто слепой и/или немой.
В качестве альтернативы, есть ли способ, которым я могу просто создать файл операторов SQL CREATE, основанный на моей схеме или моделях yaml, которые я могу запустить самостоятельно, чтобы отладить эту проблему?
Это было решение ... Доктрина не знала о базовых моделях. 'require' просто не работает. – Dolph