2

doctrine 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,
    ));
}
4

2 に答える 2

4

ALTER TABLEはSqliteによって「サポート」されていますが、許可される操作のセットは他のほとんどのデータベース(http://www.sqlite.org/lang_altertable.html)と比較して最小限であるため、Doctrineではサポートされていないと見なされます。 DBAL。

于 2010-09-05T17:52:43.693 に答える
0

ORMを使用しているときにMySQLとSQLiteの間に気付いたいくつかの微妙な違いがあります。Doctrineを使用して、外部キーの関係がMySQLのようにSQLiteで維持されていないことを発見しました。

SQLiteで合格する永続性テストがMySQLでも合格することを保証できないため、単体テストのメモリデータベースでSQLiteを使用するのでこれは苦痛です。

実際、メモリデータベース内のSQLiteをDoctrineで動作させるには、Doctrine SQLiteドライバー(http://thecodeabode.blogspot.com/2010/12/dropping-sqlite-in-memory-databases-inのコード)を微調整する必要がありました。 html)データベースをドロップするために生成されたSQL構文がメモリデータベースで失敗するため。

于 2011-01-05T00:44:05.677 に答える