0

I am currently developping a django project, and I needed to move to PostgreSql databases. I did it just like this in my settings.py file:

DATABASES = {
    'default': {
        'ENGINE'  : 'django.db.backends.postgresql_psycopg2',
        'NAME'    : 'lifeplaner',
        'USER'    : 'postgres',
        'PASSWORD': <my_password>,
        'HOST'    : 'localhost',
        'PORT'    : '5432',
    }
}

I deleted all my migration directories and ran python manage.py makemigrations and python manage.py migrate, but I am getting this error (which is didn't occur when I was using sqlite3):

(life-planer-app-env) C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\LifePlaner>python manage.py migrate
Operations to perform:
  Apply all migrations: Calendar, Manager, ToDoList, admin, auth, contenttypes, django_celery_beat, django_celery_results, sessions
Running migrations:
  Applying ToDoList.0001_initial...Traceback (most recent call last):
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
psycopg2.errors.UndefinedColumn: column "id" referenced in foreign key constraint does not exist


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\core\management\__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\core\management\__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\core\management\base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\core\management\base.py", line 398, in execute
    output = self.handle(*args, **options)
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\core\management\base.py", line 89, in wrapped
    res = handle_func(*args, **kwargs)
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\core\management\commands\migrate.py", line 244, in handle
    post_migrate_state = executor.migrate(
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\db\migrations\executor.py", line 117, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\db\migrations\executor.py", line 147, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\db\migrations\executor.py", line 230, in apply_migration
    migration_recorded = True
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\db\backends\base\schema.py", line 118, in __exit__
    self.execute(sql)
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\db\backends\base\schema.py", line 145, in execute
    cursor.execute(sql, params)
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\db\backends\utils.py", line 98, in execute
    return super().execute(sql, params)
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\db\backends\utils.py", line 66, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\db\backends\utils.py", line 75, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\db\utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Users\user\Desktop\Programmation-Python\Projets\Applications\LifePlanerApp\life-planer-app-env\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: column "id" referenced in foreign key constraint does not exist

I think that the error happends while running my ToDoList app's migration, so here it is:

# Generated by Django 3.2.6 on 2021-09-20 15:52

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='DailyTaskReview',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('total_tasks', models.PositiveIntegerField()),
                ('reached', models.PositiveIntegerField()),
                ('unreached', models.PositiveIntegerField()),
                ('success_rate', models.FloatField()),
                ('failure_rate', models.FloatField()),
                ('reached_before_reminder', models.PositiveIntegerField()),
                ('reached_after_reminder', models.PositiveIntegerField()),
                ('date', models.DateField()),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='MonthlyTaskReview',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('total_tasks', models.PositiveIntegerField()),
                ('reached', models.PositiveIntegerField()),
                ('unreached', models.PositiveIntegerField()),
                ('success_rate', models.FloatField()),
                ('failure_rate', models.FloatField()),
                ('reached_before_reminder', models.PositiveIntegerField()),
                ('reached_after_reminder', models.PositiveIntegerField()),
                ('date', models.IntegerField()),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='WeeklyTaskReview',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('total_tasks', models.PositiveIntegerField()),
                ('reached', models.PositiveIntegerField()),
                ('unreached', models.PositiveIntegerField()),
                ('success_rate', models.FloatField()),
                ('failure_rate', models.FloatField()),
                ('reached_before_reminder', models.PositiveIntegerField()),
                ('reached_after_reminder', models.PositiveIntegerField()),
                ('date', models.IntegerField()),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='WeeklyTask',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=20, unique=True)),
                ('description', models.TextField(null=True)),
                ('type_of_task', models.CharField(choices=[('sport', 'Sport'), ('studies', 'Studies'), ('some_chores', 'Home chores'), ('selfcare', 'Selfcare'), ('new_habits', 'New habits'), ('new_skills', 'New skills')], max_length=20)),
                ('active', models.BooleanField(default=True)),
                ('reminder', models.DateTimeField(null=True)),
                ('send_reminder', models.BooleanField(default=False)),
                ('reminder_sent', models.BooleanField(default=False)),
                ('finished_before_reminder', models.BooleanField(default=None, null=True)),
                ('date', models.IntegerField()),
                ('time_finish', models.DateTimeField(default=None, null=True)),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='TypeOfWeeklyTaskRate',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('number_newskills', models.PositiveIntegerField()),
                ('number_newhabits', models.PositiveIntegerField()),
                ('number_selfcare', models.PositiveIntegerField()),
                ('number_chores', models.PositiveIntegerField()),
                ('number_studies', models.PositiveIntegerField()),
                ('number_sport', models.PositiveIntegerField()),
                ('number_nonreferenced', models.PositiveIntegerField()),
                ('review', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ToDoList.weeklytaskreview')),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='TypeOfMonthlyTaskRate',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('number_newskills', models.PositiveIntegerField()),
                ('number_newhabits', models.PositiveIntegerField()),
                ('number_selfcare', models.PositiveIntegerField()),
                ('number_chores', models.PositiveIntegerField()),
                ('number_studies', models.PositiveIntegerField()),
                ('number_sport', models.PositiveIntegerField()),
                ('number_nonreferenced', models.PositiveIntegerField()),
                ('review', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ToDoList.monthlytaskreview')),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='TypeOfDailyTaskRate',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('number_newskills', models.PositiveIntegerField()),
                ('number_newhabits', models.PositiveIntegerField()),
                ('number_selfcare', models.PositiveIntegerField()),
                ('number_chores', models.PositiveIntegerField()),
                ('number_studies', models.PositiveIntegerField()),
                ('number_sport', models.PositiveIntegerField()),
                ('number_nonreferenced', models.PositiveIntegerField()),
                ('review', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ToDoList.dailytaskreview')),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='MonthlyTask',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=20, unique=True)),
                ('description', models.TextField(null=True)),
                ('type_of_task', models.CharField(choices=[('sport', 'Sport'), ('studies', 'Studies'), ('some_chores', 'Home chores'), ('selfcare', 'Selfcare'), ('new_habits', 'New habits'), ('new_skills', 'New skills')], max_length=20)),
                ('active', models.BooleanField(default=True)),
                ('reminder', models.DateTimeField(null=True)),
                ('send_reminder', models.BooleanField(default=False)),
                ('reminder_sent', models.BooleanField(default=False)),
                ('finished_before_reminder', models.BooleanField(default=None, null=True)),
                ('date', models.IntegerField()),
                ('time_finish', models.DateTimeField(default=None, null=True)),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='DailyTask',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=20, unique=True)),
                ('description', models.TextField(null=True)),
                ('type_of_task', models.CharField(choices=[('sport', 'Sport'), ('studies', 'Studies'), ('some_chores', 'Home chores'), ('selfcare', 'Selfcare'), ('new_habits', 'New habits'), ('new_skills', 'New skills')], max_length=20)),
                ('active', models.BooleanField(default=True)),
                ('reminder', models.DateTimeField(null=True)),
                ('send_reminder', models.BooleanField(default=False)),
                ('reminder_sent', models.BooleanField(default=False)),
                ('time_finish', models.DateTimeField(default=None, null=True)),
                ('finished_before_reminder', models.BooleanField(default=None, null=True)),
                ('date', models.DateField()),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'abstract': False,
            },
        ),
    ]

And here is the output of the command \d on the sql shell if it may help:

 SchÚma |                Nom                |   Type   | PropriÚtaire
--------+-----------------------------------+----------+--------------
 public | Calendar_event                    | table    | postgres
 public | Calendar_event_id_seq             | sÚquence | postgres
 public | Manager_theuser                   | table    | postgres
 public | auth_group                        | table    | postgres
 public | auth_group_id_seq                 | sÚquence | postgres
 public | auth_group_permissions            | table    | postgres
 public | auth_group_permissions_id_seq     | sÚquence | postgres
 public | auth_permission                   | table    | postgres
 public | auth_permission_id_seq            | sÚquence | postgres
 public | auth_user                         | table    | postgres
 public | auth_user_groups                  | table    | postgres
 public | auth_user_groups_id_seq           | sÚquence | postgres
 public | auth_user_id_seq                  | sÚquence | postgres
 public | auth_user_user_permissions        | table    | postgres
 public | auth_user_user_permissions_id_seq | sÚquence | postgres
 public | django_content_type               | table    | postgres
 public | django_content_type_id_seq        | sÚquence | postgres
 public | django_migrations                 | table    | postgres
 public | django_migrations_id_seq          | sÚquence | postgres

I tried to look at differents solutions on the forum and other plateforms too but with no success. I really don't know what I can do more. I hope that someone could find out the solution.

isen
  • 53
  • 9
  • 1
    can u post the models file?? also delete the database and all migration files and create a new database with the same name and do over the migrations – Exprator Sep 20 '21 at 15:26
  • Ow I am sorry, I didn't think about deleting the whole database. I feel pretty silly spending so much time on that. I followed the steps you gave me in the same order and it worked. Thank you so much ! – isen Sep 20 '21 at 15:35

0 Answers0