Конвертация myisam в innodb

Дата публикации: 04 09 2015 Автор: PazitiFF
$db = array();
 
/*
 * Параметры подключения к БД
 */
 
$db['host'] = "localhost";
$db['port'] = "3306";
$db['user'] = "root";
$db['password'] = "DBpasswd";
$db['database'] = "test_db";
 
$mysqli = @new mysqli($db['host'], $db['user'], $db['password'], $db['database'], $db['port']);
if ($mysqli->connect_errno) {
  echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error . "\n";
  die(1);
}
$results = $mysqli->query("show tables;");
if ($results === FALSE or $mysqli->connect_errno) {
  echo "MySQL error: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error . "\n";
  die(2);
}
while ($row = $results->fetch_assoc()) {
  $sql = "SHOW TABLE STATUS WHERE Name = '{$row['Tables_in_' . $db['database']]}'";
  $thisTable = $mysqli->query($sql)->fetch_assoc();
  if ($thisTable['Engine'] === 'MyISAM') {
    $sql = "alter table " . $row['Tables_in_' . $db['database']] . " ENGINE = InnoDB;";
    echo "Changing {$row['Tables_in_' . $db['database']]} from {$thisTable['Engine']} to InnoDB.\n";
    $mysqli->query($sql);
  }
  else {
    echo $row['Tables_in_' . $db['database']] . ' is of the Engine Type ' . $thisTable['Engine'] . ".\n";
    echo "Not changing to InnoDB.\n\n";
  }
}
die(0);
Далее создаём файлик, например myisam_to_innodb.php и запускаем!

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Вы можете использовать подсветку исходного кода следующими тегами: <code>, <blockcode>, <apache>, <bash>, <css>, <drupal6>, <html5>, <javascript>, <mysql>, <php>.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.