如何从Propel的schema.xml生成与sqlite3兼容的转储

时间:2012-02-04 00:16:12

标签: sqlite symfony phpunit propel

为了加快单元测试,我想使用SQLite而不是MySQL,所以我试图从Propel的schema.xml获得与SQLite兼容的数据库转储。该应用程序是在Symfony2中构建的,这就是config.yml中的db配置的样子:

propel:
    dbal:
        driver:               sqlite            
        dsn:                  sqlite:/tmp/test_db1.sq3
        default_connection:   db1
        connections:
           db1:
               user:           %database_user%
               password:       %database_password%
               dsn: sqlite:/tmp/test_db1.sq3   
           db2:
               user:           %database_user%
               password:       %database_password%
               dsn: sqlite:/tmp/test_db2.sq

但是,命令app/console propel:build-sql始终生成特定于MySQL的转储,无法加载到SQLite中。

我还从properties.ini中删除了对MySQL的任何引用,但仍然没有把它弄好。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

每个连接名称必须与数据库名称相关,因此如果您声明连接c1,则需要具有属性name="c1"的数据库标记(在schema.xml中)。

假设您有以下schema.xml

<database name="default">
    …
</database>

config.yml

中写下以下部分
propel:
    dbal:
        default_connection:   default
        connections:
            default:
                driver:               mysql            
                username:             root
                dsn:                  mysql:host=localhost;dbname=my_db

config_test.yml中的以下定义:

propel:
    dbal:
        connections:
            default:
                driver:               sqlite            
                dsn:                  sqlite:/tmp/test_db1.sq3

然后,如果要为测试生成SQL语句,只需运行:

php app/console --env=test propel:build-sql

为dev env生成SQL语句:

php app/console propel:build-sql

php app/console --env=dev propel:build-sql

答案 1 :(得分:0)

我试图让这个例子起作用,但是当我打电话时

./bin/console propel:database:create --env test

我收到以下消息:

Use connection named default in test environment.
No database name found.

然后我将dsn更改为以下之一:

dsn:                  sqlite:/tmp/test_db1.sq3;dbname=testdb

dsn:                  sqlite::memory

但两者都有,我收到以下错误消息:

[Propel] Exception caught                                        
SQLSTATE[HY000]: General error: 1 near "DATABASE": syntax error  

我在symfony 2.5.11上使用推进版1.7.1,这是否很重要。