Hallo ihr,
ich habe ein seltsames Problem: MySQL (Version 5.5.9) findet Datensätze nicht, wenn deren id in einfachen Anführungszeichen geschrieben ist.
Das heißt, mit folgendem Setup
Und dem folgenden Statement
erhalte ich den Fehler.
Da ich das Statement nicht manuell ändern kann, da es automatisch von einer Bibliothek erzeugt wird (Doctrine), kann der Fehler nur im MySQL liegen. Nach meinem Wissensstand, sind DBS in der Lage, zu casten. D.h. es sollte keinerlei Unterschied machen, ob ich das obige Statement oder
auf die Datenbank absetze. Es sollte in beiden Fällen funktionieren. Tut es aber nur in Zweiterem. Beide Felder in den anderen Tabellen existieren offensichtlich, mit den korrekten IDs.
Was läuft da schief?
PS: Das erste Statement wurde sogar durch PMA (Version 3.3.9.2) automatisch erzeugt, wenn ich auf der Oberfläche einen neuen Datensatz in `Play` einfügen will.
ich habe ein seltsames Problem: MySQL (Version 5.5.9) findet Datensätze nicht, wenn deren id in einfachen Anführungszeichen geschrieben ist.
Das heißt, mit folgendem Setup
Code:
CREATE TABLE `Play` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) DEFAULT NULL, `room_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `IDX_FEBB7184A76ED395` (`user_id`), KEY `IDX_FEBB718454177093` (`room_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE `User` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) NOT NULL, `nickname` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `UNIQ_2DA17977F85E0677` (`username`), UNIQUE KEY `UNIQ_2DA17977A188FE64` (`nickname`), UNIQUE KEY `UNIQ_2DA17977E7927C74` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; INSERT INTO `User` VALUES(1, 'user', 'nickname', 'user@user.de'); CREATE TABLE `Room` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=32 ; INSERT INTO `Room` VALUES(32); ALTER TABLE `Play` ADD CONSTRAINT `play_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `User` (`id`), ADD CONSTRAINT `play_ibfk_2` FOREIGN KEY (`room_id`) REFERENCES `Room` (`id`);
Code:
INSERT INTO `woe`.`Play` (`id` ,`user_id` ,`room_id`) VALUES (NULL , '1', '32')
#1452 - Cannot add or update a child row: a foreign key constraint fails (`woe`.`play`, CONSTRAINT `play_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `User` (`id`))
Code:
INSERT INTO `woe`.`Play` (`id` ,`user_id` ,`room_id` ,) VALUES (NULL , 1, 32)
Was läuft da schief?
PS: Das erste Statement wurde sogar durch PMA (Version 3.3.9.2) automatisch erzeugt, wenn ich auf der Oberfläche einen neuen Datensatz in `Play` einfügen will.
Kommentar