AllesMeins: MySQL - seltsames Verhalten bei foreign key constraints

Beitrag lesen

Hi,

ich habe mich entschlossen zwei meiner Tabellen per Constraint zu verknüpfen. Ich habe dies schon ein paar mal gemacht und bisher hat es immer einwandfrei funktioniert. Doch dieses mal klappt das ganze nicht. Der Constraint lässt sich problemlos einrichten (und wirft bei bereits bestehenden Einträgen auch keine Fehler), mir gelingt es aber nicht etwas neues einzutragen. Ich erhalte immer die fehlermeldung, das der Constraint fehlgeschlagen wäre, auch wenn der passende Wert ganz sicher in der anderen Tabelle ist. Sprich wahrscheinlich ist es ein ganz dummer Fehler und ich sehe den Wald vor lauter Bäumen nicht... Hier mal mein Setup:

--
-- Table structure for table randname\_translation
--

CREATE TABLE IF NOT EXISTS randname\_translation (
  originalName varchar(255) NOT NULL,
  neuerName varchar(255) NOT NULL,
  PRIMARY KEY (originalName),
  UNIQUE KEY neuerName (neuerName)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Table structure for table user
--

CREATE TABLE IF NOT EXISTS user (
  userName varchar(255) NOT NULL,
  insertTime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (userName)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Constraints for dumped tables
--

ALTER TABLE randname\_translation
  ADD CONSTRAINT randname\_translation\_ibfk\_1 FOREIGN KEY (neuerName) REFERENCES userTitel (userName) ON DELETE CASCADE ON UPDATE CASCADE;

Wenn ich nun soetwas mache wie dieses hier:
INSERT INTO user (userName) VALUES ('test');
INSERT INTO randname_translation (originalName,neuerName) VALUES ('irgendwas','test');
dann wird der Wert korrekt in die Tabelle "user" geschrieben, für den zweiten Query erhalte ich aber einen MySQL fehler:
#1452 - Cannot add or update a child row: a foreign key constraint fails (diplomarbeit.randname\_translation, CONSTRAINT randname\_translation\_ibfk\_1 FOREIGN KEY (neuerName) REFERENCES userTitel (userName) ON DELETE CASCADE ON UPDATE CASCADE)

Verwende ich für den zweiten Query statt 'test' einen Wert der bereits vor dem Anlegen des Constraints in der Tabelle war, so funktioniert das ganze einwandfrei.

Bitte helft mir auf die Sprünge. Was übersehe ich hier, ich steh schon seit Stunden offensichtlich total auf dem Schlauch...