如何在symfony2项目上使用sqlite数据库?

Jav*_* C. 23 sqlite symfony doctrine-orm

在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 = 
Run Code Online (Sandbox Code Playgroud)

使用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
Run Code Online (Sandbox Code Playgroud)

有没有解决的办法?配置缺失?在symfony2项目的官方文档中没有说明的内容?

pro*_*son 24

根据Doctrine,用于sqlite DBAL配置的元素是:

  • user (字符串):连接数据库时使用的用户名.
  • password (字符串):连接数据库时使用的密码.
  • path (字符串):数据库文件的文件系统路径.与记忆互斥.路径优先.
  • memory (boolean):如果SQLite数据库应该在内存中(非持久性),则为True.与路径互斥.路径优先.

这也列在Symfony2中Doctrine配置的完整参考中,尽管没有详细说明.

因此,您需要切换配置参数以匹配适用于sqlite的内容.

  • :)还!我发现db文件需要正确设置权限.至少在Linux上,dbserver文件必须是可由Web服务器用户读写的.它所在的目录也需要该用户的读写执行权限......再次感谢! (3认同)
  • 谢谢!我在config.yml中添加了一个指向%database_path%的路径元素,然后在parameters.ini中使用了database_path来实际引用我使用的db文件... (2认同)

Fre*_*red 5

以下是我需要让SQLite工作的原因symfony new myapp:

app/config.yml:

# Doctrine Configuration
doctrine:
    dbal:
        driver:   pdo_sqlite
        path:     "%database_path%"
Run Code Online (Sandbox Code Playgroud)

app/config/parameters.yml:

parameters:
    database_path: "%kernel.root_dir%/db/myapp_%kernel.environment%.db3"
    ...
Run Code Online (Sandbox Code Playgroud)

接下来我可以做一个composer install,创建一个新的实体,它只是工作.