Mittwoch, 13. Juli 2011
Also nun ist ja MySQL schon durchaus eine Weile in amerikanischer Hand und trotzdem stolpert man immer wieder mal über diesen lästigen Latin-1 Zeichensatz.
Aktuelles Problem war, dass ein eingespielter MySQL Dump einfach unverschämterweise die Umlaute nicht korrekt darstellen wollte, obwohl eigentlich alles in UTF8 war.
Aber halt nur eigentlich, denn des Rätsels Lösung offenbarte sich nach einem Blick auf die MySQL-Systemvariablen.
SHOW VARIABLES WHERE Variable_name LIKE '%character%' OR Variable_name LIKE '%collation%'

Da stand doch unglaublicherweise immer noch latin1
Um dem endgültig ein Ende zu bereiten, muss in die my.cnf folgende Konfiguration eingetragen werden und der MySQL Server neugestartet werden.
[mysqld]
character-set-server=utf8

Sonntag, 19. Dezember 2010
Seit PHP 5 hat man mittels fgetcsv bzw. fputcsv die Möglichkeit komfortabel Array Daten in eine CSV Datei zu schreiben bzw. zu lesen. Kommen die Daten aus einer einer MySQL Datenbank und müssen nicht mehr aufbereitet werden kann man das auch auf Datenbankebene mit einem SELECT erledigen.
SELECT * FROM `foo` INTO OUTFILE '/path/to/dump/foo.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
Existiert die Datei schon, kommt eine Fehler, da sie aus Sicherheitsgründen nicht überschrieben wird.
Soll der Dateiname dynamisch sein, zum Beispiel mit Timestamp, kann man das, wie hier beschrieben, mit einem Prepared Statement machen.
SELECT @export := concat("SELECT * into OUTFILE '/path/to/dump/foo", DATE_FORMAT(now(),'%Y%m%d-%H%i%s'), ".csv' FROM foo");
PREPARE stmt FROM @export;
EXECUTE stmt;
Donnerstag, 2. April 2009
Zeichensätze, Encodings etc. sind alte, verhasste Bekannte, die einem immer mal wieder ein Bein stellen (zumindest versuchen sie’s).
Um einen korrekten Dump einer Latin1-kodierten Datenbank hinzubekommen, kann man z.B. folgendes verwenden:
mysqldump --default-character-set=latin1 -uuname -ppwd database > destination.sql
Dann sollte beim Import auch alles klappern.
Dienstag, 10. Februar 2009
Grade drüber gestolpert: Jet Profiler von Polaricon. Die Freeware-Version ist etwas eingeschränkt, man kann keine Benutzer unterscheiden und es werden leider keine Slow Queries gezeigt. Aber zum Testen und auf Dev-Maschinen sicher einen Blick wert.