在Symfony2项目中,您可以在app / config / parameters.ini文件中配置数据库连接。文档说明您可以使用sqlite3 PDO驱动程序。
但是配置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 doctrine:schema:update --force应该在数据库文件上创建表,但它没有,文件显示为空,O字节大小。
请注意,使用任何其他PDO驱动程序效果很好,但不能使用SQLite ...
我也尝试在database_name参数中使用db文件的完整路径,但无济于事,数据库仍然没有得到更新。
供参考,这是config.yml文件的doctrine dbal部分:
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
有解决方法吗?配置缺失?在symfony2项目的官方文档中没有说明的内容?
答案 0 :(得分:23)
根据Doctrine,用于sqlite DBAL配置的元素是:
这也列在Symfony2中的完整reference for Doctrine configuration中,但未详细说明。
因此,您需要切换配置参数以匹配适用于sqlite的内容。
答案 1 :(得分:5)
在执行symfony new myapp
后,我需要让SQLite正常工作:
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 :(得分:2)
我发现如果我将指向database_name的路径行添加到我的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
这意味着您仍然可以将所有数据库信息保存在参数文件中,根据您使用的数据库,您不需要单独的配置。
答案 3 :(得分:2)
主要是文件路径或文件路径permisssion会有问题。
在 config.yml 中,将路径设置为完整路径,如
/家庭/ {名称} /NB/PHP/Symfony/test/src/Database/data.db3
不要给%database_path%或者什么。试试这个它会起作用。
如果有效,你可以给出
%kernel.root_dir%/ .. / SRC /数据库/%database_path%
还可以通过
检查sqlite是否正常的phpinfo(INFO_MODULES);
在视图/输出中,您可以看到pdo_sqlite及其版本。
答案 4 :(得分:1)
就我而言,在config / packages / doctrine.yaml中设置用户名和密码未创建受用户名/密码保护的sqlite数据库。
doctrine:
dbal:
charset: UTF8
url: '%DATABASE_URL%'
user: 'foo'
password: 'bar'
似乎用户名和密码参数被忽略了吗?