Как использовать базу данных sqlite в проекте symfony2? - PullRequest
22 голосов
/ 04 марта 2012

В проекте Symfony2 вы можете настроить соединения с базами данных в файле app / config / parameters.ini. В документации говорится, что вы можете использовать, среди прочего, драйвер PDO sqlite3.

Но настройка sqlite работает плохо:

[parameters]
    database_driver   = pdo_sqlite
    database_host     = localhost
    database_port     =
    database_name     = test_project.db
    database_user     = root
    database_password = 

Использование app / console doctrine: database: create, успешно создает файл test_project.db в корневом каталоге проекта.

Но после создания некоторых сущностей, затем запустив доктрину app / console: schema: update --force должен создать таблицы в файле базы данных, но это не так, файл выглядит пустым, с размером O в байтах.

Обратите внимание, что использование любого другого драйвера PDO работает хорошо, но не с SQLite ...

Я также пытался использовать полный путь для файла db в параметре database_name, но безрезультатно, база данных по-прежнему не обновляется.

Для справки, вот раздел dct doctrine файла config.yml:

doctrine:
    dbal:
        driver:   %database_driver%
        host:     %database_host%
        port:     %database_port%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%
        charset:  UTF8

Есть ли способ обойти это? конфигурации отсутствуют? что-то не указано в официальном документе проекта symfony2?

Ответы [ 4 ]

23 голосов
/ 04 марта 2012

В соответствии с Doctrine элементы, используемые для настройки sqlite DBAL:

  • пользователь (строка) : имя пользователя для подключения к базе данных.
  • пароль (строка) : пароль для использования при подключении к базе данных.
  • путь (строка) : путь файловой системы к файлу базы данных. Взаимоисключающий с памятью. путь имеет приоритет.
  • память (логическое значение) : истина, если база данных SQLite должна находиться в оперативной памяти (непостоянной). Взаимоисключающий путь. путь имеет приоритет.

Это также указано в полном справочнике для конфигурации Doctrine в Symfony2, хотя и не уточняется.

Так что вам нужно переключить параметры конфигурации так, чтобы они подходили для sqlite.

5 голосов
/ 25 мая 2016

Вот что мне нужно, чтобы заставить работать SQLite, просто после symfony new myapp:

в app/config.yml:

# Doctrine Configuration
doctrine:
    dbal:
        driver:   pdo_sqlite
        path:     "%database_path%"

В app/config/parameters.yml:

parameters:
    database_path: "%kernel.root_dir%/db/myapp_%kernel.environment%.db3"
    ...

Далее я мог бы сделать composer install, создать новую сущность, и это просто сработало.

2 голосов
/ 25 января 2014

В основном возникает проблема с путем к файлу или разрешением пути к файлу.

В config.yml , укажите полный путь, например

/ home/ averagename Event/NB/PHP/Symfony/test/src/Database/data.db3

Не указывать% database_path% или что-либо еще.Попробуйте, это будет работать.

Если это работает, вы можете указать как

% kernel.root_dir% / .. / src / Database /% database_path%

Также проверьте, что sqlite в порядке

phpinfo (INFO_MODULES);

В режиме просмотра / вывода вы можете увидеть pdo_sqlite и его версию.

2 голосов
/ 02 февраля 2013

Я обнаружил, что если я добавлю строку пути, указывающую на имя_базы_данных, в мой config.yml, sqlite, похоже, подхватит это, а MySQL, похоже, не будет жаловаться.

doctrine:
    dbal:
        driver:   %database_driver%
        host:     %database_host%
        port:     %database_port%
        dbname:   %database_name%
        path:     %database_name%
        user:     %database_user%
        password: %database_password%
        charset:  UTF8

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

...