Не удается поместить данные в мою базу данных - PullRequest
5 голосов
/ 05 июня 2011

Я использую Symfony 2.0 beta3 и столкнулся с довольно странной проблемой.Я настроил ORM с базой данных sqlite, следуя инструкциям на сайте, но когда я набираю:

php app/console doctrine:database:create

, тогда

php app/console doctrine:schema:create

и, наконец,

php app/console doctrine:schema:update --force

Я не получаю никакой ошибки (например, последняя команда выводит «Схема базы данных успешно обновлена»), но фактически ничего не вставлено в базу данных.Стол даже не создан.Файл базы данных генерируется после первой команды, но остается пустым.

Поскольку я настроил FOS_UserBundle, у меня должна быть, например, таблица fos_user… Когда я набираю

 php app/console doctrine:schema:update --dump-sql

Это показывает, что три SQLзапросы ожидают… Если я выполню эти три запроса с помощью SQLiteManager, он будет работать (поэтому создается таблица fos_user), но когда я хочу создать пользователя с помощью:

php app / console fos: user: create

Я получаю сообщение об ошибке «SQLSTATE [HY000]: Общая ошибка: 1 нет такой таблицы: fos_user».

Почему мне не выдается какое-либо сообщение об ошибке при запуске первых трех команд?Я что-то упустил?

Я сталкиваюсь с тем же поведением, используя драйвер pdo_pgsql, за исключением того, что SQL, генерируемый дампом, не соответствует ANSI, поэтому он не может быть выполнен для postgresql (использование datetime и autoincrement вместо timestampи серийный)….

Любая помощь будет высоко ценится

Ответы [ 2 ]

8 голосов
/ 18 июля 2011

Я нашел это решение на форумах Symfony.

Казалось бы, помощники не создают две вещи, которые вам нужны для корректной работы реализации sqlite.

Во-первых, в файле settings.ini для проекта (подгонка под костюм):

 database_path=%kernel.root_dir%/config/MyDatabase.db

Во-вторых, в файле config.yml в разделе doctrine.dbal добавьте следующее:

 path: %database_path%

Затем запустите:

php app/console doctrine:database:create

, и он должен сгенерировать базу данных для вас в папке app / config.

Вам нужно будет выполнить:

php app/console doctrine:schema:create

для создания схемы.Перезапустите код, который не работал, и он должен работать нормально.

0 голосов
/ 11 июня 2011

FOSUserBundle разработан синхронно с мастером Symfony.

  1. Обязательно обновите и symfony, и FOSUserBundle.
  2. Отбросить схему (php app/console doctrine:schema:drop --force)
  3. Вручную проверьте БД, не отброшена ли схема. В противном случае сделайте это за руку.
  4. Очистите кеш и убедитесь, что он доступен для записи.
  5. Запустите php app/console doctrine:schema:update --force снова.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...