Можно ли изменить кодировку кодировки mysql DB из миграции laravel?

Я пытаюсь изменить кодировку базы данных mysql в Laravel-5, я попытался с переносом, следуя этому примеру: https://slashdot.io/blog/adding-emoji-support-to-your-blog -948181198 – Однако ничего не обновляется, и кодировка / кодировка остается такой, какой она есть.

Можно ли сделать это с помощью миграции? Или мне придется написать отдельный скрипт?

миграция (для полноты)

/** * Run the migrations. * * @return void */ public function up() { DB::raw('ALTER TABLE homestead.survey_responses CONVERT TO CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci'); DB::raw('REPAIR TABLE homestead.survey_responses'); DB::raw('OPTIMIZE TABLE homestead.survey_responses'); } /** * Reverse the migrations. * * @return void */ public function down() { DB::raw('ALTER TABLE homestead.survey_responses CONVERT TO CHARACTER SET = utf8 COLLATE utf8_unicode_ci'); DB::raw('REPAIR TABLE homestead.survey_responses'); DB::raw('OPTIMIZE TABLE homestead.survey_responses'); } 

Вышеупомянутая миграция выполняется без ошибок, но, к сожалению, ничего не делает.

Невозможно использовать классы Schema / Blueprint , которые обычно используются в классах миграции. Но вы все равно можете запустить любой SQL, который вам нужен, используя фасад БД – в вашем случае:

 use Illuminate\Database\Migrations\Migration; use Illuminate\Support\Facades\DB; class ChangeCharsetAndCollation Migration { public function up() { DB::statement('ALTER DATABASE database CHARACTER SET new_charset COLLATE new_collation'); } public function down() { DB::statement('ALTER DATABASE database CHARACTER SET old_charset COLLATE old_collation'); } } 

Просто замените базу данных , old_charset , old_collation , new_charset , new_collation с требуемыми значениями и убедитесь, что у вашего пользователя есть разрешения для запуска такого запроса.