Ändra kollationering för MySQL-databas

För att kunna sortera tabeller i bokstavsordning i en MySQL-databas som innehåller de svenska tecknen Å, Ä och Ö så behöver databasen ha rätt kollationering.

För svenska tecken är det: utf8_swedish_ci som gäller.

Ifall du stöter på problem att din databas sorterar fel på grund av att din databas har fel kollationering så kan du åtgärda detta i efterhand genom detta lilla PHP-skript.

<?php
 $sql = mysql_connect('localhost','root','password');
 if(!$sql) {die("Kunde inte ansluta till databasen.");}
 mysql_select_db('dbname');
 $result=mysql_query('show tables');
 while($tables = mysql_fetch_array($result)) {
 foreach ($tables as $key => $value) {
 mysql_query("
 ALTER TABLE $value CONVERT TO CHARACTER SET utf8 COLLATE utf8_swedish_ci
 ");
 }}
 echo("Kollationeringen är genomförd!");
?>

Alternativt

Det går också att hämta ut alla tabeller i databasen för att sedan göra en query direkt i exempelvis PhpMyAdmin.

SELECT CONCAT("ALTER TABLE `", TABLE_NAME,"` CONVERT TO CHARACTER SET utf8 COLLATE utf8_swedish_ci;") AS mySQL
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="YOUR_DATABASE_NAME"
AND TABLE_TYPE="BASE TABLE"