Öhm....
REPLACE INTO funktioniert ja an sich wie ein INSERT, ausser, wenn ein Primary Key oder ein Unique Feld doppelt vorhanden wäre.
Das Primary key Feld gibst du ja wie gesagt nicht an, und welches Unique ist, ist anhand der Abfrage nicht ersichtlich.
Ich kann mich täuschen, aber wie soll
mySQL nun prüfen, ob der einzufügende Datensatz bereits existiert oder nicht?
Meine Vermutung ist also, durch das Fehlen der Angabe des primary keys (und auch eines unique Felds) gibts keinen Fehler, es passiert aber auch nichts.
(oder...es gibt einen Primary Key UND ein Unique Feld..in dem Fall weiss
mySQL auch nicht, was es machen soll.)
Zu erwähnen wäre vielleicht noch, dass "REPLACE INTO" immer einen DELETE und ein INSERT ausführt, wenn ein Datensatz geupdated wird, was stetig den Primary Key zwingt, sich zu reindizieren und intern eben immer zwei aktionen durchführt.
Bei einem "INSERT INTO … ON DUPLICATE KEY UPDATE" passiert das nicht, auch wenn das Statement länger ist und auf den ersten Blick weniger performant aussieht.
In der Realität ist es aber andersrum. Das hat aber nichts mit deinem Fehler zu tun, sondern nur mit der Performance...
P.S.
Poste mal die exakte DDL der Tabelle, dann kruschtel ich auch mal rum