Kategorien
Arbeit PC & Accessoires Sonstiges

MySQL: Foreign-Key-Constraints

Ich lese gerade http://blog.koehntopp.de/archives/2643-Ein-paar-Gedanken-zu-Foreign-Key-Constraints.html und bin über zwei Absätze gestolpert:

Technisch ist das eigentlich kein Problem, denn da dies alles in einer Transaktion geschieht tauchen beide Werte gleichzeitig erst zum COMMIT in der Datenbank auf, aber die Prüfung erfolgt leider per Statement und nicht per Transaktion. Ich muß also Entwickler als meinen Code passend strukturieren, egal ob das der Anwendungslogik gerecht wird oder nicht.

und

In MySQL ist die Nutzung von FK-Constraints überhaupt nur sinnvoll möglich, wenn die InnoDB Storage Engine verwendet wird. In MyISAM wird die Syntax für Constraint Definitionen zwar geparsed, dann aber nicht beachtet.

Fällt für mich eindeutig in die Rubrik: Good to know.

Kategorien
PHP Spass

Relay, ein Verzeichnis-Manager

Online im Verzeichnis rumbrowsen wollte ich schon immer. Nun bin ich beim Lesen über Dependency Injection irgendwie auf relay gestossen. Nunja, leider scheitert das an einer Eigenart von MySQL:

CREATE TABLE IF NOT EXISTS `relay_clients` (
`id` int( 11 ) NOT NULL AUTO_INCREMENT ,
`name` text NOT NULL ,
`display` text,
`path` text NOT NULL ,
PRIMARY KEY ( `id` ) ,
UNIQUE KEY `pn` ( `path` ( 250 ) , `name` ( 250 ) )
);

scheitert mit der Fehlermeldung:

Specified key was too long; max key length is 1000 bytes.
Could not create the table relay_clients

Nun, warum? 250+250 sollten doch weniger als 1000 sein? Jein 🙂