Доктрина 2 миграции, как изменить таблицу с БД sqlite? - PullRequest
2 голосов
/ 04 сентября 2010

У меня есть некоторые проблемы с изменением таблицы при переносе доктрины 2. Следующий код всегда выдает ошибку: Операция 'Doctrine \ DBAL \ Platforms \ AbstractPlatform :: getAlterTableSQL' не поддерживается платформой .

Это странно, так как alter table поддерживается sqlite.

public function up(Schema $schema)
{
    $user = $schema->getTable('user');
    $user->addColumn('resellerId', 'integer', array(
        'length'        => '10',
        'notnull'       => true,
        'unsigned'      => true,
    ));
}

Ответы [ 2 ]

4 голосов
/ 05 сентября 2010

Даже несмотря на то, что ALTER TABLE «поддерживается» Sqlite, набор разрешенных операций минимален по сравнению с большинством других баз данных (http://www.sqlite.org/lang_altertable.html),, поэтому он считается не поддерживаемым Doctrine DBAL.

0 голосов
/ 05 января 2011

Есть несколько острых различий, которые я заметил между MySQL и SQLite при использовании ORM. Используя Doctrine, я обнаружил, что отношения внешних ключей не поддерживаются в SQLite, как в MySQL.

Это неприятно, поскольку я использую SQLite в базе данных памяти для модульных тестов, поскольку я не могу гарантировать, что тесты на постоянство, которые проходят в SQLite, также проходят в MySQL.

На самом деле, чтобы заставить SQLite в памяти dbs работать с Doctrine, мне пришлось настроить драйвер Doctrine SQLite (код в http://thecodeabode.blogspot.com/2010/12/dropping-sqlite-in-memory-databases-in.html), так как синтаксис sql, сгенерированный для отбрасывания базы данных, не работает в dbs памяти.

...