Как использовать базу данных 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?
Ответы
Ответ 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 и его версию.