Доктрина 2 миграции Как изменить таблицу с SQLite DB?
-
30-09-2019 - |
Вопрос
У меня есть некоторые проблемы с изменением таблицы в миграциях доктрины 2. Следующий код всегда бросает ошибку: Операция «Доктрина DBAB Platforms Angelsplatform :: getaltertableQL» не поддерживается платформой.
Это странно, так как альтернатор поддерживается SQLite.
public function up(Schema $schema)
{
$user = $schema->getTable('user');
$user->addColumn('resellerId', 'integer', array(
'length' => '10',
'notnull' => true,
'unsigned' => true,
));
}
Решение
Несмотря на то, что альтер-таблица «поддерживается» по SQLite, набор разрешенных операций минимален по сравнению с большинством других баз данных (http://www.sqlite.org/lang_altertable.html.), следовательно, почему он считается не поддерживаться доктриной ДБАЛ.
Другие советы
Есть несколько различий, которые я заметил, что между MySQL и SQLite при использовании ORM. Используя доктрину, я обнаружил, что внешние ключевые отношения не поддерживаются в SQLite, как они находятся в MySQL.
Это боль, поскольку я использую SQLite в памяти DBS для модульных тестов, поскольку я не могу гарантировать, что тесты настойчивые, которые проходят в SQLite, также проходят в MySQL.
На самом деле, чтобы получить SQLite в памяти DBS для работы с доктриной, мне пришлось настроить драйвер доктрина SQLite (код в http://thecodeabode.blogspot.com/2010/12/dropping-sqlite-in-memory-databases-in.html.html.) Поскольку синтаксис SQL сгенерирован для сброса базы данных, не удается в памяти DBS.