DOUBLE NO MYSQL 5.1
Pessoal estou tendo um problema com o campo double no mysql 5, vou tentar explicar
crio uma tabela assim:
CREATE TABLE TESTE (
CodAuto mediumint(8) unsigned NOT NULL auto_increment,
CodProduto mediumint(8) unsigned default NULL,
Produto varchar(60) default NULL,
Quant double(7,6) default [ô]0.000000[ô],
CodComp mediumint(8) unsigned default [ô]0[ô],
Valor double(7,6) default [ô]0.000000[ô],
ValorTotal double(7,6) default [ô]0.000000[ô],
PRIMARY KEY (CodAuto)
)
mas quando insiro essa linha:
[Ô]INSERT INTO t063 VALUES([Ô]5[Ô], [Ô]1649[Ô], [Ô]MICRO DUEX ATOM 330/1G/160/MOUSE/TEC/CX SOM/GRAVADOR[Ô], [Ô]1.000000[Ô], [Ô]1653[Ô], [Ô]442.000000[Ô], [Ô]442.000000[Ô]);[Ô]
da esse erro:
Out of range value for column [ô]Valor[ô] at row 1
é estranho pq no mysql 4 funcionava certinho, se alguém puder me ajudar agradeço.
crio uma tabela assim:
CREATE TABLE TESTE (
CodAuto mediumint(8) unsigned NOT NULL auto_increment,
CodProduto mediumint(8) unsigned default NULL,
Produto varchar(60) default NULL,
Quant double(7,6) default [ô]0.000000[ô],
CodComp mediumint(8) unsigned default [ô]0[ô],
Valor double(7,6) default [ô]0.000000[ô],
ValorTotal double(7,6) default [ô]0.000000[ô],
PRIMARY KEY (CodAuto)
)
mas quando insiro essa linha:
[Ô]INSERT INTO t063 VALUES([Ô]5[Ô], [Ô]1649[Ô], [Ô]MICRO DUEX ATOM 330/1G/160/MOUSE/TEC/CX SOM/GRAVADOR[Ô], [Ô]1.000000[Ô], [Ô]1653[Ô], [Ô]442.000000[Ô], [Ô]442.000000[Ô]);[Ô]
da esse erro:
Out of range value for column [ô]Valor[ô] at row 1
é estranho pq no mysql 4 funcionava certinho, se alguém puder me ajudar agradeço.
Quando inserir, não insira o primeiro valor, pois ele é autoincrement.
[Ô]INSERT INTO t063 VALUES([Ô]1649[Ô], [Ô]MICRO DUEX ATOM 330/1G/160/MOUSE/TEC/CX SOM/GRAVADOR[Ô], [Ô]1.000000[Ô], [Ô]1653[Ô], [Ô]442.000000[Ô], [Ô]442.000000[Ô]);[Ô]
Veja se funciona.
[Ô]INSERT INTO t063 VALUES([Ô]1649[Ô], [Ô]MICRO DUEX ATOM 330/1G/160/MOUSE/TEC/CX SOM/GRAVADOR[Ô], [Ô]1.000000[Ô], [Ô]1653[Ô], [Ô]442.000000[Ô], [Ô]442.000000[Ô]);[Ô]
Veja se funciona.
deu a mesma coisa, o problema é no campo [ô]Valor[ô], se eu colocar assim:
[Ô]INSERT INTO t063 VALUES([Ô]1649[Ô], [Ô]MICRO DUEX ATOM 330/1G/160/MOUSE/TEC/CX SOM/GRAVADOR[Ô], [Ô]1.000000[Ô], [Ô]1653[Ô], [Ô]1.000000[Ô], [Ô]1.000000[Ô]);[Ô]
funciona.
[Ô]INSERT INTO t063 VALUES([Ô]1649[Ô], [Ô]MICRO DUEX ATOM 330/1G/160/MOUSE/TEC/CX SOM/GRAVADOR[Ô], [Ô]1.000000[Ô], [Ô]1653[Ô], [Ô]1.000000[Ô], [Ô]1.000000[Ô]);[Ô]
funciona.
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
Um número de ponto flutuante de tamanho normal (dupla-precisão). Valores permitidos estão entre -1.7976931348623157E+308 e -2.2250738585072014E-308, 0 e entre 2.2250738585072014E-308 e 1.7976931348623157E+308. Se UNSIGNED for especificado, valores negativos não são permitidos. O M é a largura do display e o D é número de casa decimais. DOUBLE sem argumento ou FLOAT(X) onde 25 <= X <= 53 são números de ponto flutuante de dupla-precisão.
Tente aumentar o valor de M.
Um número de ponto flutuante de tamanho normal (dupla-precisão). Valores permitidos estão entre -1.7976931348623157E+308 e -2.2250738585072014E-308, 0 e entre 2.2250738585072014E-308 e 1.7976931348623157E+308. Se UNSIGNED for especificado, valores negativos não são permitidos. O M é a largura do display e o D é número de casa decimais. DOUBLE sem argumento ou FLOAT(X) onde 25 <= X <= 53 são números de ponto flutuante de dupla-precisão.
Tente aumentar o valor de M.
Killer bom dia, tudo bem?
Estava sumido?
Killer antes de mais nada você sabe bem que sou iniciante,portanto se eu disser alguma besteira me DESCULPE.
Eu tenho uma tabela parecida com a sua e o CAMPO VALOR na minha está como VARCHAR e está funcionando perfeitamente.Tambem estou utilizando o mysql 5.1
Até mais
Estava sumido?
Killer antes de mais nada você sabe bem que sou iniciante,portanto se eu disser alguma besteira me DESCULPE.
Eu tenho uma tabela parecida com a sua e o CAMPO VALOR na minha está como VARCHAR e está funcionando perfeitamente.Tambem estou utilizando o mysql 5.1
Até mais
Killer,
O JONATHANSTECKER está correto.
Basta aumentar o Valor de M que seu problema estará resovlido.
Citação::
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
Um número de ponto flutuante de tamanho normal (dupla-precisão). Valores permitidos estão entre -1.7976931348623157E+308 e -2.2250738585072014E-308, 0 e entre 2.2250738585072014E-308 e 1.7976931348623157E+308. Se UNSIGNED for especificado, valores negativos não são permitidos. O M é a largura do display e o D é número de casa decimais. DOUBLE sem argumento ou FLOAT(X) onde 25 <= X <= 53 são números de ponto flutuante de dupla-precisão.
Tente aumentar o valor de M.
O JONATHANSTECKER está correto.
Basta aumentar o Valor de M que seu problema estará resovlido.
pessoal eu aumentei aqui e funcionou, mais no mysql 4 estava assim e funcionava certinho, voces sabem porque não funciona mais?
JONATHANSTECKER você disse que M é a largura do Display mais se eu criar um compo assim Double(5,2) ele deveria aceitar o valor [Ô]99999,99[Ô] estou certo?
ADHEL tudo bem? eu não sumi não, eu continuo acompanhando o forum, mais estava meio sem tempo, sobre o VARCHAR eu não gosto de usar para valor não,
pois pode dar mais bugs, mais obrigado pela sugestão.
pessoal obrigado pelas respostas.
JONATHANSTECKER você disse que M é a largura do Display mais se eu criar um compo assim Double(5,2) ele deveria aceitar o valor [Ô]99999,99[Ô] estou certo?
ADHEL tudo bem? eu não sumi não, eu continuo acompanhando o forum, mais estava meio sem tempo, sobre o VARCHAR eu não gosto de usar para valor não,
pois pode dar mais bugs, mais obrigado pela sugestão.
pessoal obrigado pelas respostas.
Não Killer, o M seria o tamanho total do Display.
Ex: Double(5,2) = 123,45
Double(7,6) = 1,234567
Em relação ao motivo de o MySQL na versão 4 funcionar, não sei te dizer não.
Ex: Double(5,2) = 123,45
Double(7,6) = 1,234567
Em relação ao motivo de o MySQL na versão 4 funcionar, não sei te dizer não.
O mysql 4 não dava erro, ignorando os valores que não contemplavam o tamanho, esse erro foi corrigido a partir da versão 5.0 do mysql, informando que está tentando gravar um valor fora da faixa do tamanho do campo.
muito obrigado JONATHANSTECKER entendi
Tópico encerrado , respostas não são mais permitidas