%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/migrations/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/migrations/m181029_160453_collation.php |
<?php
use yii\db\Migration;
/**
* Class m181029_160453_collation
*/
class m181029_160453_collation extends Migration
{
/**
* {@inheritdoc}
*/
public function safeUp()
{
try {
$dbName = $this->db->createCommand('SELECT DATABASE()')->queryScalar();
$this->db->createCommand('ALTER DATABASE `' . $dbName . '` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci')->execute();
} catch (\Exception $e) {
Yii::error('Could not convert database to utf8mb4: ' . $e->getMessage());
return;
}
try {
$sqlGetTables = 'SELECT table_name FROM information_schema.tables WHERE table_schema=:schema AND table_type="BASE TABLE"';
$tables = $this->db->createCommand($sqlGetTables, [':schema' => $dbName])->queryAll();
$this->db->createCommand('SET FOREIGN_KEY_CHECKS=0')->execute();
foreach ($tables as $table) {
$this->migrateTable($dbName, $table['table_name']);
}
$this->db->createCommand('SET FOREIGN_KEY_CHECKS=1')->execute();
} catch (\Exception $e) {
Yii::error('Could not migrate tables to utf8mb4: ' . $e->getMessage());
}
}
protected function migrateTable($dbName, $tableName)
{
#print 'Migrate table ' . $tableName . " to collation: utf8mb4\n";
try {
$this->db->createCommand('ALTER TABLE `' . $tableName . '` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci')->execute();
} catch (\Exception $e) {
Yii::error('Could not convert table to utf8mb4: ' . $e->getMessage());
}
try {
$this->db->createCommand('ALTER TABLE `' . $tableName . '` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci')->execute();
} catch (\Exception $e) {
Yii::error('Could not set default collation to utf8mb4: ' . $e->getMessage());
}
}
/**
* {@inheritdoc}
*/
public function safeDown()
{
echo "m181029_160453_collation cannot be reverted.\n";
return false;
}
}