public function createMigrationsTable() { /** @var \Doctrine\DBAL\Schema\AbstractSchemaManager $sm */ $sm = $this->dbHandler->getConnection()->getSchemaManager(); $dbPlatform = $sm->getDatabasePlatform(); $schema = new Schema(); $t = $schema->createTable($this->migrationsTableName); $t->addColumn('migration', 'string', array('length' => 255)); $t->addColumn('path', 'string', array('length' => 4000)); $t->addColumn('md5', 'string', array('length' => 32)); $t->addColumn('execution_date', 'integer', array('notnull' => false)); $t->addColumn('status', 'integer', array('default ' => Migration::STATUS_TODO)); $t->addColumn('execution_error', 'string', array('length' => 4000, 'notnull' => false)); $t->setPrimaryKey(array('migration')); // in case users want to look up migrations by their full path // NB: disabled for the moment, as it causes problems on some versions of mysql which limit index length to 767 bytes, // and 767 bytes can be either 255 chars or 191 chars depending on charset utf8 or utf8mb4... //$t->addIndex(array('path')); foreach ($schema->toSql($dbPlatform) as $sql) { $this->dbHandler->exec($sql); } }