예제 #1
0
 /**
  * @param \Doctrine\DBAL\Schema\Schema $schema
  * @return bool
  */
 private function executeSchemaChange($schema)
 {
     $this->conn->beginTransaction();
     foreach ($schema->toSql($this->conn->getDatabasePlatform()) as $sql) {
         $this->conn->query($sql);
     }
     $this->conn->commit();
     return true;
 }
예제 #2
0
파일: db.php 프로젝트: Combustible/core
 /**
  * drop a table - the database prefix will be prepended
  * @param string $tableName the table to drop
  */
 public static function dropTable($tableName)
 {
     $tableName = OC_Config::getValue('dbtableprefix', 'oc_') . trim($tableName);
     self::$connection->beginTransaction();
     $platform = self::$connection->getDatabasePlatform();
     $sql = $platform->getDropTableSQL($platform->quoteIdentifier($tableName));
     self::$connection->query($sql);
     self::$connection->commit();
 }
예제 #3
0
 /**
  * @param \Doctrine\DBAL\Schema\Schema $schema
  * @return bool
  */
 private function executeSchemaChange($schema)
 {
     $this->conn->beginTransaction();
     foreach ($schema->toSql($this->conn->getDatabasePlatform()) as $sql) {
         $this->conn->query($sql);
     }
     $this->conn->commit();
     if ($this->conn->getDatabasePlatform() instanceof SqlitePlatform) {
         \OC_DB::reconnect();
     }
     return true;
 }
 /**
  * Fix mime types
  */
 public function run()
 {
     if (!$this->connection->getDatabasePlatform() instanceof SqlitePlatform) {
         return;
     }
     $sourceSchema = $this->connection->getSchemaManager()->createSchema();
     $schemaDiff = new SchemaDiff();
     foreach ($sourceSchema->getTables() as $tableSchema) {
         $primaryKey = $tableSchema->getPrimaryKey();
         if (!$primaryKey) {
             continue;
         }
         $columnNames = $primaryKey->getColumns();
         // add a column diff for every primary key column,
         // but do not actually change anything, this will
         // force the generation of SQL statements to alter
         // those tables, which will then trigger the
         // specific SQL code from OCSqlitePlatform
         try {
             $tableDiff = new TableDiff($tableSchema->getName());
             $tableDiff->fromTable = $tableSchema;
             foreach ($columnNames as $columnName) {
                 $columnSchema = $tableSchema->getColumn($columnName);
                 $columnDiff = new ColumnDiff($columnSchema->getName(), $columnSchema);
                 $tableDiff->changedColumns[] = $columnDiff;
                 $schemaDiff->changedTables[] = $tableDiff;
             }
         } catch (SchemaException $e) {
             // ignore
         }
     }
     $this->connection->beginTransaction();
     foreach ($schemaDiff->toSql($this->connection->getDatabasePlatform()) as $sql) {
         $this->connection->query($sql);
     }
     $this->connection->commit();
 }