3
respostas

[Dúvida] Erro ao criar Migration V2

Olá,

Ao realizar a migração da versão 2 (V2) da minha aplicação, encontrei um erro que mencionava a existência de registros no banco de dados com a coluna "telefone" definida como nula (NULL). Para contornar o problema temporariamente, acessei o banco de dados e apaguei todos os registros de médicos que eu havia inserido para fins de teste. Após essa ação, a migração foi bem-sucedida e o erro não mais ocorreu.

No entanto, estou preocupado com a necessidade de manter os registros existentes em uma aplicação em produção, onde não posso simplesmente apagar os dados do banco de dados. Gostaria de saber se existe uma maneira de resolver essa situação sem ter que apagar as informações do banco de dados e garantir que a migração funcione sem problemas.

Utilizo o banco de dados Postgres não sei se tem alguma relação de o banco utilizado no curso ser o MYSQL.

Agradeço antecipadamente por qualquer orientação ou sugestões sobre como resolver esse problema de forma mais adequada.

3 respostas

Olá Jhonatan!

O que mudou da v1 para a v2 em relação ao banco de dados e as entidades que foram mapeadas no seu código? A coluna telefone foi removida da aplicação?

Por enquanto, eu descartaria ser alguma diferença do MySQL em relação ao PostgreSQL, mas seria útil ter mais detalhes do erro que aconteceu. Pode dar mais detalhes?

Olá Gabriel, Agradeço seu retorno.

Na transição da V1 para a V2, efetuei uma única modificação, que foi a inclusão da coluna de telefone. No entanto, ao realizar essa nova migração, eu já havia registros já cadastrados no banco de dados que, nesse caso, não tinham valores definidos para o campo "telefone". Na migração V2, eu especifiquei que o campo "telefone" não poderia ser nulo, o que, suspeito, tenha ocasionado o erro.

Não consegui identificar o erro exato que ocorreu, pois minha prioridade foi resolver o problema imediatamente. Para solucioná-lo, precisei excluir os dados do banco que estavam sem o campo "telefone" preenchido, e após essa ação, a aplicação funcionou conforme o esperado. Quando for necessário fazer a mesma alteração para o cadastro de clientes, tentarei reproduzir o erro para fins de depuração.

Registrei essa dúvida aqui, pois em uma aplicação em produção, não podemos simplesmente excluir dados cadastrados no banco devido à adição de um novo campo em uma tabela.

Olá,

Entendi, faz sentido sim e o erro sem dúvida aconteceu por conta disso. Para o caso disso em produção, existem várias soluções, mas ao menos duas são as mais diretas que eu conheço:

  1. Se essa coluna não era necessária até o momento (v1), ela não deveria ser obrigatória na v2, uma vez que se trata de um campo novo que é input de usuários. É possível "forçar" o usuário a preencher essa coluna num próximo login, mas esse controle ficaria com a aplicação e não com o banco de dados.
  2. Se realmente quiser ter essa garantia no banco de dados (constraint not null), pode isolar as informações de contato em uma tabela separada que contém a chave estrangeira de usuário e ai poderá adicionar apenas dados novos e já com as constraints no banco de dados garantindo a integridade.