Convertire un MySQL da myISAM ad InnoDB
Tutti i nostri servizi, funzionano sia in mysql in myISAM che InnoDB, tuttavia, l’engine di default del mySQL e’ attualmente, myISAM, e’ possibile convertire le tabelle myISAM in InnoDB avviando questo semplice scripts dentro il suo servizio hosting
#### Script Start, copiare a partire da <?php ###
<?php
$time = explode(‘ ‘,microtime());
$time = $time[1] + $time[0]; //return array
$begintime = $time; //define begin time
//Your database connection items here
$host = ‘localhost’; //Specify host
$dbuser = ”; // Specify user with alter permissions
$dbpass = ”; //user password
$mydb = ”; //specify schema or db to be modified
//connect to database using variables above
$link = mysql_connect($host,$dbuser,$dbpass);
$db = mysql_select_db($mydb);
if (!$link) {
die(‘Could not connect: ‘ . mysql_error());
}
echo “Connected Successfully to: $host.” . “nn”;
echo “Using database: $mydb.” . “nn”;
echo “Running script as $dbuser.” . “nn”;
//show tables in database
$sql = ‘SHOW TABLES’;
$rs = mysql_query($sql);
echo $sql;
echo “n”;
if (!$rs) {
die(‘SQL Recordset Error: ‘ . mysql_error());
}
else {
//loop through tables and convert to InnoDB
while($row = mysql_fetch_array($rs))
{
$tbl = $row[0];
$sql = “ALTER TABLE $tbl engine=InnoDB;”;
mysql_query($sql);
echo $sql;
echo “n”;
}
echo ‘Operation Completed.’ . “nn”;
echo ‘Confirm Storage Engine conversion using phpmyadmin ‘ . “n” . ‘or from mysql: show create table tblname.’ . “n”;
}
//close connection
mysql_close($link);
$time = explode(” “, microtime());
$time = $time[1] + $time[0];
$endtime = $time; //define end time
$totaltime = ($endtime – $begintime);
echo “Script Execution Time: $totaltime” . ” seconds.” . “nn”;
?>
#### Script End, copiare sino a ?> ###
In alternativa, e’ sempre possibile fare la conversione manualmente direttamente dal phpMyAdmin, nel tab “OPERAZIONI”.
In caso di problemi, aprire un ticket in area clienti.