sql >> Databasteknik >  >> RDS >> PostgreSQL

Rails Migration byter kolumn för att använda Postgres-matriser

PostgreSQL vet inte hur man automatiskt konverterar en kolumn med varchar till en array av varchar . Den vet inte vad du kan tänkas ha för avsikt, eftersom den inte har något sätt att veta vilket format du tror att de aktuella värdena är i.

Så du måste berätta det; det är vad USING klausul är för.

ActiveRecord verkar inte explicit stödja USING klausul (inte överraskande, eftersom den knappt stöder ens de mest grundläggande databasfunktionerna). Du kan dock ange din egen SQL-text för migreringen.

Förutsatt att dina strängar är kommaseparerade och kanske inte själva innehåller kommatecken, till exempel:

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

(Jag använder inte Rails själv och har inte testat detta, men det överensstämmer med syntaxen som används i exempel på andra ställen).



  1. 2 sätt att lista tabellerna i en SQLite-databas

  2. Vad är ett bra sätt att trimma alla blanksteg från en sträng i T-SQL utan UDF och utan CLR?

  3. Grunderna för PostgreSQL Schema Management

  4. JSON_VALID() – Testa för giltig JSON i MySQL