Skip to content

Erros comuns

Raphael Rivas edited this page Dec 12, 2023 · 5 revisions

Erro ao usar manage.py

Possíveis causas:

Os arquivos migrations foram alterados

Para resolver rode os comandos de acordo com o estágio em que você está trabalhando (veja aqui):

Dev nativo:

  • Esvaziar banco de dados

    scripts/populate_db/populate_db.py -p 5432 --empty_db
  • Criar tabelas

    python mobilidade_rio/manage.py migrate
  • Subir dados

    scripts/populate_db/populate_db.py

Dev local:

  • Eliminar arquivos do docker, e esvaziar disco virtual

    docker-compose -f ./mobilidade_rio/dev_local/docker-compose_local.yml down -v
    docker image prune -f
  • Rodar o Docker novamente

    docker-compose -f ./mobilidade_rio/dev_local/docker-compose_local.yml up
  • Subir dados

    python scripts/populate_db/populate_db.py

Lembre-se que, para usar o populate_db, você deve ter os arquivos .csv na pasta fixtures (veja aqui).

O que é o disco virtual?

Disco virtual é o disco que o Docker usa para armazenar os dados do banco de dados. Com o passar do tempo, ele pode ficar cheio, ocupando centenas de GBs.

Para esvaziá-lo, rode o comando docker system prune -a -f (ou docker system prune -a para ver o que será apagado).

PG Admin: must be owner of database

Causa:

O seu usuário atual (e.g. postgres) não é dono do banco de dados.

Solução:

  1. Se necessário, peça ajuda ao responsável pelo banco de dados.

  2. Entre no banco de dados postgres:

Exemplo:

psql -h localhost -p 5433 -U postgres -W postgres
  1. Altere o dono do banco de dados (ex: mobilidade_rio) para o usuário em questão (ex: meu_usuario):
ALTER DATABASE mobilidade_rio OWNER TO meu_usuario;

Migrations são executadas mas não aparecem no banco de dados

Situação:

Você executou a migration corretamente, e o arquivo de migration foi criado na pasta migrations:

$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions, myapp
Running migrations:
    Applying myapp.0001_initial... OK

Mas ao verificar o banco de dados, há apenas as tabelas padrão do Django:

myapp=# \dt
                List of relations
    Schema     |            Name            | Type  | Owner
‐--------------+----------------------------+-------+-------
    public     | auth_group                 | table | myapp
    public     | auth_group_users           | table | myapp
    public     | auth_permission            | table | myapp
    public     | auth_user                  | table | myapp
    public     | auth_user_groups           | table | myapp
    public     | auth_user_user_permissions | table | myapp
    public     | django_admin_log           | table | myapp
    public     | django_content_type        | table | myapp
    public     | django_migrations          | table | myapp
    public     | django_session             | table | myapp
    (10 rows)

O correto deveria ser:

myapp=# \dt
                List of relations
     Schema    |            Name            | Type  | Owner
‐--------------+----------------------------+-------+-------
    public     | auth_group                 | table | myapp
    public     | auth_group_users           | table | myapp
    public     | auth_permission            | table | myapp
    public     | auth_user                  | table | myapp
    public     | auth_user_groups           | table | myapp
    public     | auth_user_user_permissions | table | myapp
    public     | django_admin_log           | table | myapp
    public     | django_content_type        | table | myapp
    public     | django_migrations          | table | myapp
    public     | django_session             | table | myapp
+   public     | myapp_mymodel              | table | myapp
    (11 rows)
    ```

Solução - Remover todas as tabelas do banco de dados e recriar o SCHEMA:

PostgreSQL:

$ psql -U postgres
postgres=# DROP SCHEMA public CASCADE;
postgres=# CREATE SCHEMA public;

Erro constante: Predictor - No service found for today

Algumas causas desse problema descobertas até agora são:

Causa 1: Faltam informações no banco de dados do app ou na fonte dos dados GPS

Isto pode ser a causa mais comum.

Será necessário investigar primeiro se a fonte dos dados GPS estão com muito poucos veículos.

Ou será preciso verificar se há algum problema com a tabela no banco de dados do app.

Causa 2: O Docker está inicializando com restrição de memória

Para reproduzir o erro, crie um docker-compose para testar essa funcionalidade:

mobilidade_rio/local_dev/docker-compose-limit.yml

version: "3.9"

services:
  web:
    extends:
      file: docker-compose.yml
      service: web

    # Limitar recursos do Docker
    cpus: "0.5"
    mem_reservation: "10M"
    mem_limit: "250M"

  django-q:
    extends:
      file: docker-compose.yml
      service: django-q

    # Limitar recursos do Docker
    cpus: "0.5"
    mem_reservation: "10M"
    mem_limit: "250M"

  db:
    extends:
      file: docker-compose.yml
      service: db

    # Limitar recursos do Docker
    cpus: "0.5"
    mem_reservation: "10M"
    mem_limit: "250M"

volumes:
  dpostgres_data: