Laravel 5
Как изменить engine таблиц в MySQL?
Вариант $table->engine = ‘InnoDB’; работает только для новой таблицы. То есть не подходит для изменения движка.
Решение
Для конкретной таблицы:
//миграция
1 2 3 4 |
public function up() { DB::statement('ALTER TABLE education_form ENGINE = InnoDB'); } |
Для всех таблиц (понадобится пакет doctrine/dbal):
1 2 3 4 |
$dbSchemaManager = Schema::getConnection()->getDoctrineSchemaManager(); foreach ($dbSchemaManager->listTableNames() as $tableName) { DB::statement(sprintf('ALTER TABLE %s ENGINE = InnoDB', $tableName)); } |
Код выполнится без ошибок даже если движок таблицы уже задан как InnoDB .