Hierfür habe ich mich für postgres entschieden; Heroku bietet das an und die Implementierung dazu scheint soweit relativ einfach zu sein.
Nun habe ich, zum testen, erstmal eine lokale DB (mit pgAdmin 4) erstellt & die Verbindung hergestellt.
Ich dachte eig., dass ich nun nur migrieren muss und alles klappt. Dem ist leider nicht so, anscheinend gibt es dann doch Felder, die in sqlite funktionieren, die es in postgres so nicht gibt?
Konkret, das entnehme ich den Fehlermeldungen, geht es um folgendes Feld:
Code: Alles auswählen
task_choice = models.CharField(max_length=2 ,choices=TaskChoices.choices, default=TaskChoices.TASK_CURRENT)Hier die besagte Fehlermeldung ( py manage.py migrate):
Code: Alles auswählen
Operations to perform:
Apply all migrations: admin, auth, authtoken, contenttypes, crog, sessions
Running migrations:
Applying crog.0003_auto_20201212_1019...Traceback (most recent call last):
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
psycopg2.errors.UndefinedColumn: FEHLER: Spalte »task_choice« von Relation »crog_task« existiert nicht
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\Robin\DEV\crog-project\crog-drf\manage.py", line 22, in <module>
main()
File "C:\Users\Robin\DEV\crog-project\crog-drf\manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
utility.execute()
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\core\management\__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\core\management\base.py", line 330, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\core\management\base.py", line 371, in execute
output = self.handle(*args, **options)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\core\management\base.py", line 85, in wrapped
res = handle_func(*args, **kwargs)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\core\management\commands\migrate.py", line 243, in handle
post_migrate_state = executor.migrate(
File "C:\Users\Robin\DEV\crog-project\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\Robin\DEV\crog-project\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\Robin\DEV\crog-project\env\lib\site-packages\django\db\migrations\executor.py", line 227, in apply_migration
state = migration.apply(state, schema_editor)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\db\migrations\migration.py", line 124, in apply
operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\db\migrations\operations\fields.py", line 166, in database_forwards
schema_editor.remove_field(from_model, from_model._meta.get_field(self.name))
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\db\backends\base\schema.py", line 524, in remove_field
self.execute(sql)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\db\backends\base\schema.py", line 142, in execute
cursor.execute(sql, params)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\db\backends\utils.py", line 98, in execute
return super().execute(sql, params)
File "C:\Users\Robin\DEV\crog-project\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\Robin\DEV\crog-project\env\lib\site-packages\django\db\backends\utils.py", line 75, in _execute_with_wrappers
return executor(sql, params, many, context)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "C:\Users\Robin\DEV\crog-project\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\Robin\DEV\crog-project\env\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: FEHLER: Spalte »task_choice« von Relation »crog_task« existiert nichtBeim Googlen bin ich auf folgenden "Ersatz" gekommen:
Code: Alles auswählen
from django.contrib.postgres import fields
...
task_choices = fields.ArrayField(
models.CharField(max_length=2, choices=TaskChoices.choices, default=TaskChoices.TASK_CURRENT),
default = list,
blank=True,
)Code: Alles auswählen
Operations to perform:
Apply all migrations: admin, auth, authtoken, contenttypes, crog, sessions
Running migrations:
Applying crog.0003_auto_20201212_1019...Traceback (most recent call last):
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
psycopg2.errors.UndefinedColumn: FEHLER: Spalte »task_choice« von Relation »crog_task« existiert nicht
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\Robin\DEV\crog-project\crog-drf\manage.py", line 22, in <module>
main()
File "C:\Users\Robin\DEV\crog-project\crog-drf\manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
utility.execute()
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\core\management\__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\core\management\base.py", line 330, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\core\management\base.py", line 371, in execute
output = self.handle(*args, **options)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\core\management\base.py", line 85, in wrapped
res = handle_func(*args, **kwargs)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\core\management\commands\migrate.py", line 243, in handle
post_migrate_state = executor.migrate(
File "C:\Users\Robin\DEV\crog-project\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\Robin\DEV\crog-project\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\Robin\DEV\crog-project\env\lib\site-packages\django\db\migrations\executor.py", line 227, in apply_migration
state = migration.apply(state, schema_editor)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\db\migrations\migration.py", line 124, in apply
operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\db\migrations\operations\fields.py", line 166, in database_forwards
schema_editor.remove_field(from_model, from_model._meta.get_field(self.name))
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\db\backends\base\schema.py", line 524, in remove_field
self.execute(sql)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\db\backends\base\schema.py", line 142, in execute
cursor.execute(sql, params)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\db\backends\utils.py", line 98, in execute
return super().execute(sql, params)
File "C:\Users\Robin\DEV\crog-project\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\Robin\DEV\crog-project\env\lib\site-packages\django\db\backends\utils.py", line 75, in _execute_with_wrappers
return executor(sql, params, many, context)
File "C:\Users\Robin\DEV\crog-project\env\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "C:\Users\Robin\DEV\crog-project\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\Robin\DEV\crog-project\env\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: FEHLER: Spalte »task_choice« von Relation »crog_task« existiert nicht