sql >> Database >  >> RDS >> PostgreSQL

Rails Migration veranderende kolom om Postgres-arrays te gebruiken

PostgreSQL weet niet hoe een kolom van varchar automatisch moet worden geconverteerd in een array van varchar . Het weet niet wat u van plan bent, omdat het niet weet in welk formaat u denkt dat de huidige waarden zijn.

Dus je moet het vertellen; dat is wat de USING clausule is voor.

ActiveRecord lijkt de USING . niet expliciet te ondersteunen clausule (niet verrassend, omdat het zelfs de meest elementaire databasefuncties nauwelijks ondersteunt). U kunt echter uw eigen SQL-tekst voor de migratie opgeven.

Ervan uitgaande dat uw strings door komma's zijn gescheiden en zelf geen komma's mogen bevatten, bijvoorbeeld:

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

(Ik gebruik Rails zelf niet en heb dit niet getest, maar het is consistent met de syntaxis die elders in voorbeelden wordt gebruikt).



  1. SQL Sentry is nu SentryOne

  2. SQL Server Agent-taken lokaliseren in Azure Data Studio

  3. Back-up/herstel van een gedockte PostgreSQL-database

  4. ODP.NET Oracle.ManagedDataAccess veroorzaakt ORA-12537 netwerksessie einde van bestand