Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

« Léo »

Insiro um numero e é gravado outro

Recommended Posts

Fala galera,

 

Criei uma coluna INT (15) para armazenar CPF (sem pontuações). O problema é que qd insiro o CPF da pau.

 

Qd insiro um registro com 11 nºs é retornado o erro:

 

Registro(s) afetado(s): 0
Warning: #1264 Out of range value adjusted for column 'BD_cpf' at row 1

UPDATE `mbd3`.`clientes_pf` SET `BD_cpf` = '12345678987' WHERE `clientes_pf`.`BD_id` =1 LIMIT 1;

E fica armazenado um outro numero: 2147483647

 

Alguem sabe o que pode estar havendo?

 

 

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala galera,

 

Criei uma coluna INT (15) para armazenar CPF (sem pontuações). O problema é que qd insiro o CPF da pau.

 

Qd insiro um registro com 11 nºs é retornado o erro:

 

Registro(s) afetado(s): 0
Warning: #1264 Out of range value adjusted for column 'BD_cpf' at row 1

UPDATE `mbd3`.`clientes_pf` SET `BD_cpf` = '12345678987' WHERE `clientes_pf`.`BD_id` =1 LIMIT 1;

E fica armazenado um outro numero: 2147483647

 

Alguem sabe o que pode estar havendo?

 

 

Grato

o tamanho do int de 15 nao quer dizer q ele tem 15 posicoes, não me lembro exatamente, mas acredito q seja em bytes,

mude o tipo do seu campo de int(15) para char(11)... aih você tera as 11 posicoes que precisa pra armazenar um cpf sem formatacao, inclusive serao

armazenados os zeros a esquerda do numero

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

da um

 

"describe tabela" e posta o resultado aki...

 

quanto ao conselho do amigo peço q ignore ja que armazer numero como varchar pq ta dando erro eh igual aquela historia "o corno e o sofa"

 

O corno chegou em casa e pegou a mulher f****** com o vizinho em cima do sofa, mto puto da vida ele disse: nunca mais minha mulher vai me trair com o vizinho no sofa, entao pegou e jogou o sofa fora. O resultado eh q agora o corno ve televisao sentado no chao em compensaçao a mulher dele nao trai mais ele naquele sofa especificamente, ta traindo em outros lugares

Compartilhar este post


Link para o post
Compartilhar em outros sites

hueauhae adorei a historinha giesta

O int(15) é em posições mesmo, tanto que tinyint é 3 (0 a 255) unsigned, e int(4) signed (-127 a 127). CPF tem sempre 11 dígitos, então vai de char(11) mesmo. Mas se você quiser colocar como número ainda, taca como BIGINT, são números com 19 dígitos, o 'famoso' 64 bits, e os 19 dígitos é signed ainda, se colocar como unsigned, vai pra 20.

 

http://dev.mysql.com/doc/refman/5.0/en/num...e-overview.html

 

Edit: Opa, e agora que eu percebi, você tá tratando o número como texto, colocando o número entre ''. Não sei se tem a ver, mas não é recomendado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

da um

 

"describe tabela" e posta o resultado aki...

 

quanto ao conselho do amigo peço q ignore ja que armazer numero como varchar pq ta dando erro eh igual aquela historia "o corno e o sofa"

 

O corno chegou em casa e pegou a mulher f****** com o vizinho em cima do sofa, mto puto da vida ele disse: nunca mais minha mulher vai me trair com o vizinho no sofa, entao pegou e jogou o sofa fora. O resultado eh q agora o corno ve televisao sentado no chao em compensaçao a mulher dele nao trai mais ele naquele sofa especificamente, ta traindo em outros lugares

giesta, o resultado do campo é:

Field - BD_cpf

Type - int(15)

Null - NO

Key -

Default - NULL

Extra -

 

Quanto às outras dicas:

Eu havia posto int(11), visto que nao insiro a formatação e são apenas numeros. Usar char para um campo de inteiros não seria errado?

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

UPDATE `mbd3`.`clientes_pf` SET `BD_cpf` = 12345678987 WHERE `clientes_pf`.`BD_id` =1 LIMIT 1;

O seu campo de int é "signed". O número máximo que você vai conseguir colocar ali é 2147483647 (10 dígitos), o que já te impossibilita de colocar 12345678987 (11 dígitos)

Compartilhar este post


Link para o post
Compartilhar em outros sites

UPDATE `mbd3`.`clientes_pf` SET `BD_cpf` = 12345678987 WHERE `clientes_pf`.`BD_id` =1 LIMIT 1;

O seu campo de int é "signed". O número máximo que você vai conseguir colocar ali é 2147483647 (10 dígitos), o que já te impossibilita de colocar 12345678987 (11 dígitos)

Olá Paulo,

 

COmo resolvo isso entao? no phpMyAdmin fui no campo BD_cpf e alterei "Atributos" para "UNSIGNED" e nao resolveu...

 

Grato, abs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

hueauhae adorei a historinha giesta

O int(15) é em posições mesmo, tanto que tinyint é 3 (0 a 255) unsigned, e int(4) signed (-127 a 127). CPF tem sempre 11 dígitos, então vai de char(11) mesmo. Mas se você quiser colocar como número ainda, taca como BIGINT, são números com 19 dígitos, o 'famoso' 64 bits, e os 19 dígitos é signed ainda, se colocar como unsigned, vai pra 20.

 

http://dev.mysql.com/doc/refman/5.0/en/num...e-overview.html

 

Edit: Opa, e agora que eu percebi, você tá tratando o número como texto, colocando o número entre ''. Não sei se tem a ver, mas não é recomendado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hueauhae adorei a historinha giesta

O int(15) é em posições mesmo, tanto que tinyint é 3 (0 a 255) unsigned, e int(4) signed (-127 a 127). CPF tem sempre 11 dígitos, então vai de char(11) mesmo. Mas se você quiser colocar como número ainda, taca como BIGINT, são números com 19 dígitos, o 'famoso' 64 bits, e os 19 dígitos é signed ainda, se colocar como unsigned, vai pra 20.

 

http://dev.mysql.com/doc/refman/5.0/en/num...e-overview.html

 

Edit: Opa, e agora que eu percebi, você tá tratando o número como texto, colocando o número entre ''. Não sei se tem a ver, mas não é recomendado.

Opa! Vlw paulo! Desculpa a desatenção.

 

Desculpa mas em q você ta programando? VB?

Em php!

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tive esse problema:

 

Warning: #1264 Out of range value for column

 

 

Nesse caso basta mudar de INT para BIGINT no tipo da coluna do banco.

O INT só serve para números pequenos.

 

Abraços :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não seria o caso de usar campo do tipo character ?!

Basta validar o CPF antes de gravar para garantir que tem apenas números e um CPF válido.

Function que valida CPF para MySql deve ter aos montes na WEB.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.