Hello,
I am somewhat surprised that the older software is not compatible with the newer version of MySQL. Usually, it is the other way around. Have you checked to see if newer versions of the incompatible software exist? I would be willing to wager that they have been updated to accommodate the newer MySQL versions.
Syntax changed a litte bit and also there are some new protected words which are used by older software in sql without backticks etc. I agree updating would be the better way but we talking about a big number of servers and customers still using it. this is not changed over night....
I looked into dovecot-1.2.11/src/lib-dict/dict-sql.c, there seems to be a check for "ON DUPLICATE KEY UPDATE" on line 588. I recompiled dovecot on mysql 4.0 machine and tried again but there was no change. SQL is successful when dataset in quotatable is existing. in this case dovecot triggers an update of the data. But if no line for user is existing in quotatable and an insert is needed there is still the error:
sql dict: commit failed: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON DUPLICATE KEY UPDATE bytes='12525'' at line
why is the mysql 4.0-recompiled dovecot thinking my mysql is able to do "ON DUPLICATE KEY UPDATE"? How to avoid this?
Thanks, Andre