1
resposta

Error during migration run

Olá, quando vou tentar rodar o comando >>> npm run typeorm migration:run para fazer o import das informações para o banco de dados recebo essa mensagem de erro:

 adopet-backend@0.0.1 typeorm
> typeorm-ts-node-commonjs --dataSource src/db/data-source-cli.ts migration:run

Error during migration run:
Error: getaddrinfo EAI_AGAIN postgres
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:107:26) {
  errno: -3001,
  code: 'EAI_AGAIN',
  syscall: 'getaddrinfo',
  hostname: 'postgres'
}

Poderiam me ajudar a resolver esse problema? Eu basicamente baixei o projeto e coloquei pra rodar os comandos igual na aula. Fico no aguardo.

1 resposta

Eu me deparei com esse erro também. Alguns parâmetros estão errados na configuração do sistema. Verifica o arquivo .env, na raiz, que tem as variáveis que serão usadas nos serviços.

Para fazer esse teste de container, antes do docker_compose.yml, eu tive que alterar a primeira linha do arquivo .env, onde tem o nome do host para "localhost", para o sistema encontrar onde o banco está instalado.

DB_HOST=localhost

Comigo também aconteceu um erro na conexão do banco, porque o usuário configurado no arquivo .env não existia no PostgreSQL. Assim como foi preciso criar o banco antes de rodar o container, também tive que criar o usuário "root", com senha "root", para adequar o servidor do banco aos parâmetros de configuração. Utilizei esses comandos:

Primeiro vamos entrar no prompt do PostgreSQL: sudo -u postgres psql

Depois criei um usuário chamado root: create user root superuser;

E alterei a senha do usuário para "root": alter role root password 'root';

E assim o comando abaixo funciona. npm run typeorm migration:run

Mas é importante alterar depois!!!

Como o intuito é fazer tudo rodar em containers separados, o contanier do backend não vai rodar o banco de dados, então não pode apontar para localhost, então lá no arquivo .env você precisa alterar para o nome do container que você vai usar para o banco de dados. No arquivo docker-compose.yml do curso, tem essas linhas:

 postgres:
    image: postgres:latest
    container_name: adopet-db

Então se continuar usando o mesmo padrão, no arquivo .env você altera a primeira linha para:

DB_HOST=adopet-db

Continuando ao longo do curso, pode ser que você precise fazer mais algumas alterações no arquivo docker-compose.yml, mas vai passo-a-passo que no final dá certo.