2013-01-08 7 views
8

La seguente query:Attenzione # 1264: di errore di gamma in mysql

INSERT INTO skill (`emp_number`, `skill_id`, `year_exp`, `comments`) 
VALUES ('4', '3', '23.45', '') 

sta producendo l'errore:

1 row inserted. 
Warning: #1264 Out of range value for column 'year_exp' at row 1 
year_exp column is of datatype decimal(2,2) 

Ti prego, aiutami a pinta l'errore.

+1

Qual è il valore di ** inserito ** registra ora? – inhan

+0

@inhan grazieinhan. Il valore è 0.99 – Misty

+2

Usa 'decimal (4,2)' per correggere il tuo errore e leggi come specificare i valori corretti per quel tipo di dati nei documenti MySQL. –

risposta

8

Cambia tipo campo su decimal(4,2). Dettagli: https://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html

La sintassi della dichiarazione per una colonna DECIMALE è DECIMALE (M, D). Gli intervalli di valori per gli argomenti in MySQL 5.7 sono i seguenti:

M è il numero massimo di cifre (la precisione). Ha un intervallo da 1 a 65.

D è il numero di cifre a destra del punto decimale (la scala). Ha una gamma da 0 a 30 e non deve essere più grande di M.

+0

grazie. Ora ho capito – Misty

+1

@CharlieS hai ragione, modificato. – czachor

11

Credo che stai avendo questo errore perché il campo è year_expDECIMAL(2,2), e si desidera DECIMAL(4,2). DECIMAL(2,2) significa un numero di precisione 2, con un massimo di 2 posizioni decimali. Ma questo numero ha 4 cifre di precisione.

Questo collegamento a MSDN parla della precisione decimale.

http://msdn.microsoft.com/en-US/library/ms187746(v=SQL.90).aspx

Ecco un breve test con risultati analoghi (fatto in SQL Server 2008, ma penso che tu sia su MySQL ...)

1) ha creato una tabella con una colonna di prova:

CREATE TABLE testtable (testcolumn DECIMAL(2,2)) 

2) Ran istruzione iNSERT ...:

INSERT INTO testtable (testcolumn) VALUES (23.45) 

... e ha ricevuto questo errore ...

Msg 8115, livello 16, stato 8, linea 1
errore di overflow aritmetico conversione numerica di tipo di dati numerico.

(COMMENTO: uno dei miei errori favoriti '... "Non può convertire il numero al numero di ..." ah ah)

3) colonna modificata secondo le specifiche corrette

ALTER TABLE testtable ALTER COLUMN testcolumn DECIMAL(4,2) 

4) Ripetuta la stessa istruzione di inserimento. Funziona.

Per favore fatemi sapere se questo aiuta.

+0

grazie @ user1958225 – Misty

+0

La spiegazione è buona. Questa è la risposta giusta anche per me. – junerockwell