2015-09-15 9 views
18

Ho uno schema:Come modificare il tipo di campo in Ecto?

schema "editables" do 
    field :title, :string 
    field :content, :string 

    timestamps 
    end 

Ora voglio cambiare il tipo di modulo un campo :integer-:binary. Qual è il modo corretto di scrivere la migrazione perché l'utilizzo di add non funziona ...?

def change do 
    alter table(:editables) do 
     add :title, :binary 
     add :content, :binary 

     timestamps 
    end 
    end 

risposta

22

bisogna usare modify/3 per modificare il tipo. add/3 è solo per l'aggiunta di nuove colonne.

alter table(:editables) do 
    modify :content, :binary 
end 
+0

Oh mio ... ho completamente perso nella documentazione .... :(Grazie Gazler –

+1

ma ora sto ottenendo questo errore: 'ERROR (datatype_mismatch): colonna "titolo" non può essere gettato automaticamente per digitare bytea' –

+0

@PauloJaneiro Se è possibile eliminare il database, eliminarlo e ricrearlo lo risolverà.Il problema è che non sarà in grado di migrare automaticamente il tipo. – Gazler

Problemi correlati