Update alle MySQL collate en character sets met 1 SQL commando

August 9th, 2011 by admin Leave a reply »

Aan het begin bij het opzetten van wat nu een grote database is geworden, heb ik gekozen voor de standaard latin codering. Door allerlei veranderingen in de PHP code en de overstap naar Zend Framework moest de collcation overgezet worden naar utf8-unicode-ci. Met zo’n 80 tabellen met ieder gemiddeld zo’n 30 velden is dat een hoop werk om handmatig te doen.

Dus google erbij gehaald en uiteindelijk het in enkele minuten voor elkaar gekregen met de volgende SQL:

select concat( 'alter table `', a.table_name, '` convert to character set utf8 collate utf8_unicode_ci;' )
from information_schema.tables a
where a.table_schema = "schema"

Vergeet niet om achter table_schema de juiste database in te vullen in plaats van schema wat er nu staat. De uitvoer van de bovenstaande SQL kan je weer kopieren en plakken via de SQL tab van je database in phpMyAdmin.

Om het ook meteen in Zend Framework goed te krijgen moest ik ook nog bij het aanmaken van het Zend_DB object een driver optie meegeven:

'driver_options' => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8;'

Dit plaats je dus in de zelfde array als waar je ook de login, wachtwoord en database opgeeft voor de te openen database.

Advertisement

Leave a Reply

*