Как сгенерировать sqlite3-совместимый дамп из schema.xml в Propel - PullRequest
0 голосов
/ 04 февраля 2012

Чтобы ускорить модульные тесты, я хочу использовать SQLite вместо MySQL, поэтому я пытаюсь получить совместимый с SQLite дамп баз данных из файла схемы Propel schema.xml.Приложение построено в Symfony2, и вот так выглядит конфигурация db в config.yml:

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.

Я также удалил все ссылки на MySQL из properties.ini и до сих пор не понял их правильно.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

Каждое имя соединения должно быть связано с именем базы данных, поэтому, если вы объявляете соединение 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

Чтобы сгенерировать операторы SQL для вашей среды разработчика:

php app/console propel:build-sql

или

php app/console --env=dev propel:build-sql
0 голосов
/ 06 апреля 2015

Я пытаюсь заставить пример работать, но когда я звоню

./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  

Я использую Propel версии 1.7.1 в Symfony 2.5.11, если это важно.

...