Hi, First, I'm new to this mailing list, hopefully I'll do my post the *right* way.
I've a problem with duplicate key error messages. In my application I use a table with multiple unique keys (ip_addr and print_name). Lets use this example: Table `device` : CREATE TABLE `device` ( `id` INT NOT NULL AUTO_INCREMENT , `ip_addr` VARCHAR( 15 ) NOT NULL , `type` VARCHAR( 32 ) NOT NULL , `print_name` VARCHAR( 32 ) NOT NULL , PRIMARY KEY ( `id` ) , UNIQUE ( `ip_addr` , `print_name` ) ) ENGINE = InnoDB; Let's do for example this two queries. INSERT INTO `device` (ip, type, print_name) VALUES ('192.168.0.1', 'pc', 'desktop1'); INSERT INTO `device` (ip, type, print_name) VALUES ('192.168.0.1', 'router', 'gw1'); (Note the duplicate ip 192.168.0.1) My problem is the error message sent MySql Server if a duplicate key error occurres during insert / update. I have one machine running mysqld 5.0.41 who produces this message: Duplicate entry '192.168.0.1' for key 2. On the other machine who runs mysqld 5.1.51 I got the following: Duplicate entry '192.168.0.1' for key 'ip'. Since my application does something like this: If(String.find('key 2', err_msg)){ Print 'you have selected the ip twice'. } else { Print_generic_error(); } ... it will not run on mysql 5.1.51. Digging through mysqld source, I found this behaviour handled in sql/handler.cc and changed from printing key_nr to key.name between this versions. :( Is there a possible better, reliable way to detect what key is duplictated as searching in the error message? Greets Thorsten **************************************** MACNETIX<http://www.macnetix.com/> GmbH Huttenstr. 31 10553 Berlin Tel. +49 (0) 30 34 34 678 - 0 Fax. +49 (0) 30 34 34 678 - 99 heym...@macnetix.de<mailto:heym...@macnetix.de> Sitz & Gerichtsstand /Registered Office & Place of Jurisdiction : Berlin Registergericht/ Registered at: HRB 86505 B Berlin-Charlottenburg Geschäftsführung/ Member of the Management Board: Dirk Wahrheit, Peggy Bielke Bitte beachten Sie unsere Webseite www.macnetix.de<http://www.macnetix.de/>! Diese Information ist ausschliesslich fuer den Adressaten bestimmt und kann vertraulich oder gesetzlich geschuetzte Informationen enthalten. Wenn Sie nicht der bestimmungsgemaesse Adressat sind, unterrichten Sie bitte den Absender und vernichten Sie diese Mail. Anderen als dem bestimmungsgemaessen Adressaten ist es untersagt, diese E-Mail zu lesen, zu speichern, weiterzuleiten oder ihren Inhalt auf welche Weise auch immer zu verwenden. Wir verwenden aktuelle Virenschutzprogramme. Fuer Schaeden, die dem Empfaenger gleichwohl durch von uns zugesandte mit Viren befallene E-Mails entstehen, schliessen wir jede Haftung aus. The information contained in this email is intended only for its addressee and may contain confidential and/or privileged information. If the reader of this email is not the intended recipient, you are hereby notified that reading, saving, distribution or use of the content of this email in any way is prohibited. If you have received this email in error, please notify the sender and delete the email. We use updated antivirus protection software. We do not accept any responsibility for damages caused anyhow by viruses transmitted via email.