2015-07-07 9 views
7

Używam django_celery z łączeniem z Amazon Redshift. Aby przeprowadzić migrację bazy danych, po "makemigrations" użyłem polecenia "python manage.py migrate" i pojawi się komunikat o błędzie, jak pokazano poniżej.Kolumna "django_migrations.id" ma nieobsługiwany typ "serial" [z Amazon Redshift]

Powodem jest Redshift nie obsługuje typu danych "serial", ale automatycznie tworzona jest tabela "django_migrations", która zawiera typ "serial".

Jak zatrzymać migrację Django utwórz tę tabelę lub unikaj używania seryjnego w tabeli "django_migrations".

D:\code\test_celery_django>python manage.py migrate 
Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 338, in execute_from_command_line 
    utility.execute() 
    File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 330, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "C:\Python27\lib\site-packages\django\core\management\base.py", line 390, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "C:\Python27\lib\site-packages\django\core\management\base.py", line 441, in execute 
    output = self.handle(*args, **options) 
    File "C:\Python27\lib\site-packages\django\core\management\commands\migrate.py", line 93, in handle 
    executor = MigrationExecutor(connection, self.migration_progress_callback) 
    File "C:\Python27\lib\site-packages\django\db\migrations\executor.py", line 19, in __init__ 
    self.loader = MigrationLoader(self.connection) 
    File "C:\Python27\lib\site-packages\django\db\migrations\loader.py", line 47, in __init__ 
    self.build_graph() 
    File "C:\Python27\lib\site-packages\django\db\migrations\loader.py", line 180, in build_graph 
    self.applied_migrations = recorder.applied_migrations() 
    File "C:\Python27\lib\site-packages\django\db\migrations\recorder.py", line 59, in applied_migrations 
    self.ensure_schema() 
    File "C:\Python27\lib\site-packages\django\db\migrations\recorder.py", line 53, in ensure_schema 
    editor.create_model(self.Migration) 
    File "C:\Python27\lib\site-packages\django\db\backends\base\schema.py", line 286, in create_model 
    self.execute(sql, params or None) 
    File "C:\Python27\lib\site-packages\django\db\backends\base\schema.py", line 111, in execute 
    cursor.execute(sql, params) 
    File "C:\Python27\lib\site-packages\django\db\backends\utils.py", line 79, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
    File "C:\Python27\lib\site-packages\django\db\backends\utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "C:\Python27\lib\site-packages\django\db\utils.py", line 97, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "C:\Python27\lib\site-packages\django\db\backends\utils.py", line 62, in execute 
    return self.cursor.execute(sql) 
django.db.utils.NotSupportedError: Column "django_migrations.id" has unsupported type "serial". 
+0

Widzę to samo - czy byłeś w stanie to rozgryźć? – josephmisiti

+0

jakiego sterownika bazy danych używasz? – Jerzyk

Odpowiedz

0

Czy próbujesz użyć Redshift jako bazy danych backend dla swojej aplikacji internetowej? To zły pomysł, Redshift to hurtownia danych i jako taka indywidualna wydajność zapytań i opóźnienia są dalekie od doskonałych, nie wspominając o tym, że Redshift nie wymusza podstawowych kluczy, czego prawie na pewno Django oczekuje.

Moja rekomendacja, używaj PostgreSQL.