sqlite3 - createquerybuilder - ¿Cómo usar la base de datos sqlite en el proyecto symfony2?
doctrine schema update (4)
Descubrí que si agrego una línea de ruta que apunta al nombre de la base de datos a mi config.yml, sqlite parece recoger eso, y MySQL no parece quejarse.
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
Esto significa que aún puede mantener toda la información de la base de datos en el archivo de parámetros, no necesita configuraciones separadas dependiendo de la base de datos que esté utilizando.
En un proyecto Symfony2, puedes configurar las conexiones de bases de datos en el archivo app / config / parameters.ini. La documentación indica que puede utilizar, entre otros, el controlador de PDO sqlite3.
Pero configurar sqlite no funciona bien:
[parameters]
database_driver = pdo_sqlite
database_host = localhost
database_port =
database_name = test_project.db
database_user = root
database_password =
Usando app / console doctrine: database: create, crea con éxito un archivo test_project.db en el directorio raíz del proyecto.
Pero después de crear algunas entidades, ejecute la doctrina app / console: schema: update --force debe crear las tablas en el archivo de base de datos, pero no lo hace, el archivo aparece vacío, con un tamaño de O bytes.
Tenga en cuenta que usar cualquier otro controlador PDO funciona bien, pero no con SQLite ...
También he intentado usar la ruta completa para el archivo db en el parámetro nombre_base_datos, pero en vano, la base de datos aún no se actualiza.
Para referencia, aquí está la sección dbal de doctrina del archivo config.yml:
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
¿Hay alguna forma de evitar esto? ¿Faltan configuraciones? ¿Algo no indicado en el documento oficial del proyecto symfony2?
Esto es lo que necesitaba para que SQLite funcionara, justo después de hacer el symfony new myapp
:
en app/config.yml
:
# Doctrine Configuration
doctrine:
dbal:
driver: pdo_sqlite
path: "%database_path%"
En app/config/parameters.yml
:
parameters:
database_path: "%kernel.root_dir%/db/myapp_%kernel.environment%.db3"
...
Luego pude hacer una composer install
, crear una nueva entidad y simplemente funcionó.
Principalmente, la ruta del archivo o la autorización de la ruta del archivo tendrán problemas.
En config.yml , establezca la ruta a la ruta completa como
/home/{name}/NB/PHP/Symfony/test/src/Database/data.db3
No le des a% database_path% o lo que sea. Intenta esto funcionará.
Si funciona puedes dar como
% kernel.root_dir% / .. / src / Database /% database_path%
También puedes ver si sqlite está bien.
phpinfo (INFO_MODULES);
En vista / salida puede ver pdo_sqlite y su versión.
Según Doctrine los elementos utilizados para la configuración DBAL de sqlite son:
- usuario (cadena) : Nombre de usuario para usar cuando se conecta a la base de datos.
- contraseña (cadena) : contraseña para usar cuando se conecta a la base de datos.
- ruta (cadena) : la ruta del sistema de archivos al archivo de base de datos. Mutuamente excluyentes con memoria. El camino tiene prioridad.
- memoria (boolean) : verdadero si la base de datos SQLite debe estar en memoria (no persistente). Mutuamente excluyente con camino. El camino tiene prioridad.
Esto también se encuentra en la referencia completa para la configuración de Doctrine en Symfony2, aunque no está detallado.
Por lo tanto, debe cambiar los parámetros de configuración para que coincida con lo que es apropiado para sqlite.