PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Rails Migration ändert Spalte zur Verwendung von Postgres-Arrays

PostgreSQL kann eine Spalte von varchar nicht automatisch konvertieren in ein Array von varchar . Es weiß nicht, was Sie vielleicht beabsichtigen, weil es nicht wissen kann, in welchem ​​Format die aktuellen Werte Ihrer Meinung nach vorliegen.

Sie müssen es also sagen; dafür steht USING Klausel ist für.

ActiveRecord scheint USING nicht explizit zu unterstützen -Klausel (nicht überraschend, da sie selbst die grundlegendsten Datenbankfunktionen kaum unterstützt). Sie können jedoch Ihren eigenen SQL-Text für die Migration angeben.

Angenommen, Ihre Zeichenfolgen sind durch Kommas getrennt und dürfen selbst keine Kommas enthalten, zum Beispiel:

def change
  change_column :table, :dummy_column, "varchar[] USING (string_to_array(dummy_column, ','))"
end

(Ich benutze Rails selbst nicht und habe es nicht getestet, aber es stimmt mit der Syntax überein, die in anderen Beispielen verwendet wird).