PDA

View Full Version : MySQL ed errore 1062


dansolo
23-10-2003, 00:27
Salve a tutti,

ho creato in MySql la seguente tabella:

CREATE TABLE Capo (
Codice INT(13) UNSIGNED NOT NULL PRIMARY KEY,
Marca VARCHAR(30) NOT NULL,
Tipo VARCHAR(30) NOT NULL,
Immagine VARCHAR(30),
NomeDistributore VARCHAR(20) );

Inserisco la prima riga con il comando

INSERT INTO Capo VALUES ('2345654354632', 'Blah', 'blsdf.jpg', 'Rambazzo', 'Maglietta');

e tutto va bene. Appena cerco di inserire una seconda riga, ad esempio:

INSERT INTO Capo VALUES ('5673829876432', 'Benelli', 'Gigen.jpg', '
Nano', 'Magliettone');

mi scrive: ERROR 1062: Duplicate entry '2345654354632' for key 1

Ma come è possibile se il codice che sto inserendo io è diverso? (dunque la chiave è diversa!). Se cancello l'unica riga inserita, allora me la fa inserire. Comunque non mi fa inserire più di una riga, dandomi questo fantomatico errore 1062. Da che cosa può dipendere visto che non mi sembra di aver fatto cose strane? Grazie in anticipo.

cionci
23-10-2003, 08:27
Che versione di mysql hai ?

cionci
23-10-2003, 08:34
Se inserisci 1 e 2 come valori delle chiavi funziona ?

A me da l'errore "ERROR 1062: Duplicate entry '4294967295' for key 1"

La spiegazione è questa... 4294967295 è (2^32)-1. Il numero amssimo contenuto in un unsigned int è appunto 4294967295.
Entrambi i numeri sono superiori a (2^32)-1 quindi vengono sostituiti da questo all'interno della query.

dansolo
23-10-2003, 11:38
Sei un grande!!! Io ci sono arrivato solo dopo una notte di sbattimenti, quando poi sono andato a vedermi fino a che punto arrivava il dato di tipo int e allora ho capito.... Dunque penso che dovrei usare il BIGINT. Mi confermi quest'impressione? Grazie per l'aiuto

cionci
23-10-2003, 11:46
Che significato ha quell'intero ? Ha qualche significato per i tuoi dati ?

dansolo
23-10-2003, 14:06
Si è un codice univoco. Ho approfittato dell'esistenza di questo codice univoco per non mettere un altro campo ID autoincrementante. Dovrebbe essere una scelta valida...

cionci
23-10-2003, 14:55
In definitiva non devi farci niente su quel codice... Allora fai semplicemente un campo di VARCHAR(13)...

dansolo
23-10-2003, 20:09
Si, hai ragione non devo fare operazioni matematiche. In realtà non volevo che ci fosse la possibilità di inserire lettere, comunque utilizzando il PHP posso fare un controllo a posteriori su questo. Grazie ancora. :)