Hi

You have a PRIMARY KEY of just the id field like PRIMARY KEY ( `id` ).  You
need both ip and type to be the primary key

Cheers
Neil

On Mon, Sep 6, 2010 at 2:02 PM, Thorsten Heymann <heym...@macnetix.de>wrote:

> 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.
>
>

Reply via email to