NB! Antud koodi kopeerimine/mugandamine/käivitamine on selle tegevuse tegija omal vastutusel. Radicenter (ja/või tema töötajad) ei vastuta mingil määral selle koodi,toimivuse ja/või väärkasutuse eest.

NB! Ennem antud skriptide kopeerimist/käivitamist, TULEB KINDLASTI VÕTTA MUUDETAVA BAASI VARUKOOPIA!

1. Tabelite parandamine:

01 <?php
02
03 $db = new mysqli('localhost', 'ANDMEBAASIKASUTAJA','SALASÕNA');
04
05 if ($db->connect_error) {
06     die("Connection failed: " . $conn->connect_error);
07 }
08 echo "Connected successfully";
09
10 $dbs = array();
11 $dbs[] = 'ANDMEBAASINIMI';
12
13 foreach($dbs as $v){
14     $db->select_db($v);
15     $q = $db->query('show tables');
16     
17     $tables = array();
18
19     while($r = $q->fetch_array()){
20             $tables[] = $r[0];
21     }
22     foreach($tables as $t){
23         echo "Repairing $v.$t\n<br>";
24         $x = $db->query('REPAIR TABLE `'.$t.'`;');
25     }
26 }
27 $db->close();
28 echo 'All is well!';
29 ?>

2. Tabelite storage mootori vahetamine:

01 <?php
02
03 $db = new mysqli('localhost', 'ANDMEBAASIKASUTAJA','SALASÕNA');
04
05 if ($db->connect_error) {
06     die("Connection failed: " . $conn->connect_error);
07 }
08 echo "Connected successfully";
09
10 $dbs = array();
11 $dbs[] = 'ANDMEBAASINIMI';
12
13 foreach($dbs as $v){
14     $db->select_db($v);
15     $q = $db->query('show tables');
16     
17     $tables = array();
18
19     while($r = $q->fetch_array()){
20             $tables[] = $r[0];
21     }
22     foreach($tables as $t){
23         echo "Altering table engine for: $v.$t\n<br>";
24         $db->query('ALTER TABLE `'.$t.'` ENGINE=InnoDB;');
25     }
26 }
27 $db->close();
28 echo 'All is well!';
29 ?>

NB! Engine tüüp võib olla MYISAM või INNODB või…. – rohkem infot lehel: SIIN

3. Tabelite character set/encoding vahetamine misiganes -> utf8mb4_unicode_ci:
(NB! Ennem selle koodi käivitamist TULEB KINDLASTI TEHA VARUKOOPIA ANDMEBAASIST!)

01 <?php
02
03 $db = new mysqli('localhost', 'ANDMEBAASIKASUTAJA','SALASÕNA');
04
05 if ($db->connect_error) {
06     die("Connection failed: " . $conn->connect_error);
07 }
08 echo "Connected successfully";
09
10 $dbs = array();
11 $dbs[] = 'ANDMEBAASINIMI';
12
13 foreach($dbs as $v){
14     $db->select_db($v);
15     echo "Altering database character set for: $v\n<br>";
16     $db->query('ALTER DATABASE `'.$v.'` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;');
17     $q = $db->query('show tables');
18     
19     $tables = array();
20
21     while($r = $q->fetch_array()){
22             $tables[] = $r[0];
23     }
24     foreach($tables as $t){
25         echo "Altering table character set for: $v.$t\n<br>";
26         $db->query('ALTER TABLE `'.$t.'` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;');
27     }
28     //Converting also needed columns
29     echo "Altering table column_name character sets for all table colums under: $v\n<br>";
30     $column_query = $db->query("select CONCAT('ALTER TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME,'` CHANGE ',COLUMN_NAME,' ', COLUMN_NAME, ' ', DATA_TYPE,'(',CHARACTER_MAXIMUM_LENGTH,') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;') as column_alter from information_schema.COLUMNS WHERE DATA_TYPE = 'varchar' AND TABLE_SCHEMA = '".$v."'");
31     foreach($column_query as $x){
32         $db->query($x);
33     }
34 }
35 $db->close();
36 echo 'All is well!';
37 ?>
IP Info:
Radicenter 2024