Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] foreign key mismatch ao atualizar dados de tabela

Ok Bruno.
Copiei o arquivo de db a partir do emulador (adb pull /data/data/$PACKAGE/databases/MeuDb) e executei a consulta no Sqliteman. Mesmo resultado, a construtora existe.
Aproveitei e conferi os dados do cliente..o cliente está com o email e id da construtora certos também.
Quando executo manualmente

UPDATE CLIENTE set FONE_CELULAR='1111111111' WHERE UPPER(EMAIL)=UPPER('julio@gmail.com') AND UPPER(ID_CONSTRUTORA)=UPPER('2');

também dá certo.

Em 16 de dezembro de 2011 13:00, Bruno Albuquerque <bruno.albuquerque@gmail.com> escreveu:
Cara, conecta no sqlite e rode queries manualmente. Por exemplo, no
seu codigo abaixo não dá pra ter a mínima idéia se o nome do campo de
id da tabela construtora está correto (tem que ser _id).

-Bruno

2011/12/16 Júlio Cesar Bueno Cotta <juliocbcotta@gmail.com>:
> Bruno, durante a instalação eu estou inserindo vários campos de teste nas
> tabelas, entre eles estão as construtoras..sendo que eu especifico o id
> delas manualmente. Executei o select e me retornou os dados corretamente.
>
>     public static Construtora get(Long idConstrutora) {
>
>         idConstrutora = 2L;
>         //Cursor c = consultar(TABELA_CONSTRUTORA, COLUNA_ID_CONSTRUTORA,
> idConstrutora.toString());
>         Cursor c = mDb.query(true,TABELA_CONSTRUTORA,
> null,COLUNA_ID_CONSTRUTORA+"=" +String.valueOf(idConstrutora),null,null,
> null, null,null);
>         c.moveToFirst();
>         Construtora cons = deCursorParaConstrutora(c);
>         System.out.println("CONSTRUTORAAAAAAAAAAAAAAAAAAAAAAAAAA
> "+c.getCount()+"  ID "+cons.getIdConstrutora());
>         c.close();
>         return cons;
>
>     }
>
> 12-16 12:06:54.542: I/System.out(459): CONSTRUTORAAAAAAAAAAAAAAAAAAAAAAAAAA
> 1  ID 2
>
> Queria muito que esse fosse o problema, pois seria simples de resolver, mas
> pelo o que vi aqui, não é.
> Mais alguma ideia Bruno?
>
> Em 16 de dezembro de 2011 09:46, Bruno Albuquerque
> <bruno.albuquerque@gmail.com> escreveu:
>
>> Cara, mais uma vez. O problema *é* com a chave estrangeira. O Erro diz
>> exatamente isso. Rode esse query:
>>
>> SELECT * FROM CONSTRUTORA WHERE _id = 2
>>
>> Isso retorna algo?
>>
>> -Bruno
>>
>> 2011/12/15 Júlio Cesar Bueno Cotta <juliocbcotta@gmail.com>:
>> > Pessoal..testei aqui...e nada mudou..
>> > Coloquei "no action" e tb tentei com "restrict" em todas as tabelas
>> > (tanto
>> > no on update quanto no on delete) para ver se funcionava..e nada..
>> > continuou
>> > dando o mesmo erro..coloquei auto incremento em todas as tabelas de
>> > chave
>> > simples e tb não mudou nada..se tiverem mais alguma ideia..eu gostaria
>> > de
>> > ouvir (ler).. :-D
>> >
>> > E somente a titulo de curiosidade..quando desligo a verificação de chave
>> > extrangeira no SQLite..tudo funciona..aparentemente..
>> >
>> > Abraço.
>> >
>> > 2011/12/15 Júlio Cesar Bueno Cotta <juliocbcotta@gmail.com>
>> >>
>> >>
>> >>
>> >> Em 15 de dezembro de 2011 17:17, Diego Rocha <diego@diegosrocha.com.br>
>> >> escreveu:
>> >>
>> >>> Diego,
>> >>>
>> >>> Autoincrement você não coloca como null, pois como ele disse, no
>> >>> SQLite o
>> >>> "Integer Primary Key" vai funcionar como autoincrement. Quando ele não
>> >>> passar valor pro insert (ao invés de null vai usar o incremento) na
>> >>> chave.
>> >>>
>> >> Por definição, uma chave primaria não pode ser null..ela é o ponto de
>> >> referencia único (no sentido que identifica unicamente uma linha na
>> >> tabela)
>> >> e por tanto qualquer coluna marcada como sendo primary key..nunca pode
>> >> ser
>> >> marcada como "null". Tem haver com a integridade da tabela..
>> >>
>> >>> Você disse que o problema acontece só no update não é?
>> >>
>> >> Sim.
>> >>>
>> >>> Será que o problema não é por você estar usando cascade do update?
>> >>> Faz um teste com a tabela sem "on update cascade" e vê se funciona.
>> >>>
>> >> Vou testar hoje a noite e dou um feedback..estou usando on delete
>> >> restrict
>> >> e on update cascade em todas as FK.. ao meu ver..isso não deveria ser
>> >> um
>> >> problema..mas vai que é neh. :-D
>> >> Assim que testar aviso aqui..
>> >> Abraço e muito obrigado pelas dicas!
>> >>>
>> >>> Atenciosamente,
>> >>> Diego Rocha
>> >>
>> >>
>> >>
>> >>
>> >> --
>> >> Júlio Cesar Bueno Cotta
>> >> Bacharel em Ciência da Computação pela UFV
>> >> Mestrando em Ciência da Computação pela UFABC
>> >>
>> >
>> >
>> >
>> > --
>> > Júlio Cesar Bueno Cotta
>> > Bacharel em Ciência da Computação pela UFV
>> > Mestrando em Ciência da Computação pela UFABC
>> >
>
>
>
>
> --
> Júlio Cesar Bueno Cotta
> Bacharel em Ciência da Computação pela UFV
> Mestrando em Ciência da Computação pela UFABC
>



--
Júlio Cesar Bueno Cotta
Bacharel em Ciência da Computação pela UFV
Mestrando em Ciência da Computação pela UFABC

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário