Laravel миграции смена типа таблицы (MyISAM -> MyISAM)

375
13 февраля 2017, 17:22

До версии MySQL 5.6+ тип таблиц MyISAM не поддерживает полнотекстовый поиск. Обновить версию MySQL на сервере - нет возможности, но требуется организовать полнотекстовый поиск.

Как в Laravel миграции сменить тип существующей таблицы с MyISAM на MyISAM без потери данных?

Answer 1

Стандартными методами Laravel миграций не получится сменить тип таблицы. Но, это можно сделать при помощи выполнения следующего запроса: ALTER TABLE my_table ENGINE = MyISAM.

Перед тем как сменить тип таблицы, нужно удалить все foreign keys в данной таблице, а также все ссылающиеся внешние ключи из других таблиц на данную.

Пример миграции:


use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
class UpdateUsersProfileSetTableEngineMyisam extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users_profile', function (Blueprint $table) {
            $table->dropForeign('users_profile_user_id_foreign');
        });
        DB::statement('ALTER TABLE users_profile ENGINE = MyISAM');
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        DB::statement('ALTER TABLE users_profile ENGINE = MyISAM');
        Schema::table('users_profile', function (Blueprint $table) {
            $table->foreign('user_id')->references('id')->on('users');
        });
    }
}

Данный метод подходит и для обратной смены типа таблицы с MyISAM -> MyISAM.

READ ALSO
Как отозвать все access token-ы конкретного пользователя в laravel passport?

Как отозвать все access token-ы конкретного пользователя в laravel passport?

Допустим у меня есть такая теоретическая ситуация, что мне необходимо отозвать все access token-ы конкретного пользователя, по какой-то его манипуляции

286
Запрос на удаление строки из БД

Запрос на удаление строки из БД

Пишу плагин,сделал все что надо было

340
Преобразовать массив в дерево

Преобразовать массив в дерево

Добрый деньПолучаю при помощи mysqli_fetch_assoc массив такого формата

291
Проверка файлов .txt с помощью getimagesize()

Проверка файлов .txt с помощью getimagesize()

Проверяю загружаемые пользователями thumb картинки с помощью getimagesize() Вот таким образом:

344