Подтвердить что ты не робот

Как использовать базу данных sqlite для проекта symfony2?

В проекте 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: database: create, успешно создает файл test_project.db в корневом каталоге проекта.

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

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

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

Для справки, здесь раздел доктрины файла 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?

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

Вот что мне нужно, чтобы заставить 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"
    mailer_transport: smtp
    mailer_host: 127.0.0.1
    mailer_user: null
    mailer_password: null
    secret: 7ced9d5c76ef7892fdb0d40e8c1fe23b36ad45bd

Далее я мог бы сделать composer install, создать новый объект, и он просто сработал.

Ответ 3

Я обнаружил, что если я добавлю строку пути, указывающую на имя базы данных, на мой 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

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

Ответ 4

В основном проблема с файлом или файловым расширением.

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

/дом/{имя}/NB/PHP/Symfony/test/src/Database/data.db3

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

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

% kernel.root_dir%/../SRC/База данных /% database_path%

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

phpinfo (INFO_MODULES);

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