"kann nicht in den Integer-Typ umgewandelt werden" -Fehler

8

Das ist meine erste Frage, also werde ich die Geduld schätzen.

Ich habe ein paar Attribute von CharField in IntegerField geändert. Im Folgenden finden Sie den Code:

%Vor%

Ich habe eine Migration nach Süden gemacht, um auf Postgres zu migrieren, und das ist der Fehler, den ich bekomme:

%Vor%

Jede Hilfe wird sehr geschätzt und danke im Voraus !!

    
Badi8beach 06.01.2013, 03:46
quelle

2 Antworten

17

Wenn Sie Ihre Daten einfach wegwerfen möchten, können Sie die Spalte löschen und eine neue erstellen

Wenn Sie Ihre Daten behalten möchten, müssen Sie entweder

a) Geben Sie Ihrer neuen Spalte einen anderen Namen oder einen anderen Namen b) Erstellen Sie eine temporäre Spalte, um die Daten während des Übergangs zu speichern

Sie brauchen dann eine Sequenz von Migrationen

  1. eine Schemamigration, um die neue (oder temporäre) Spalte
  2. hinzuzufügen
  3. eine Datenmigration, die die Daten explizit verschiebt, wobei jede erforderliche Konvertierung (z.B. "A" - & gt; 1)
  4. durchgeführt wird
  5. möglicherweise eine Schemamigration, die Ihre temporäre Spalte löscht
second 06.01.2013, 11:49
quelle
1

Sie müssen "USING (col_name :: integer)" hinzufügen, um diesen Fehler zu beheben. Aber in diesem Fall müssen Sie die direkte Abfrage verwenden.

migrateEngine.execute ('ALTER TABLE-Test ALTER COLUMN testScore TYPE INTEGER unter Verwendung von testScore :: integer')

    
srana 12.12.2015 21:10
quelle

Tags und Links