2017-05-05 60 views
1

在Postgres數據庫表中,我有一個現有文本列post_ids,其值爲["", "1", "2"]。現在添加了一個新的文本和數組的列。將數組列更新爲Rails移植中另一個文本列的值

add_column :pages, :post_ids_new, :text, array: true, default: [] 

在遷移我想所有的值從遷移到post_idspost_ids_new

Page.update_all("post_ids_new = post_ids") 

得到這個錯誤,因爲新列的類型文本數組:

PG::DatatypeMismatch: ERROR: column "post_ids_new" is of type text[] but expression is of type text 

You will need to rewrite or cast the expression. 

有什麼方法可以遷移這些值嗎?

回答

-1

您可以通過運行rails console在控制檯中嘗試運行Page.update_all("post_ids_new = post_ids")

或者如果您的應用程序在Heroku上運行,則可以通過heroku console運行控制檯。

如果你想在開發環境中測試命令你做你的生產環境之前,你可以通過運行pg_dump --clean database_name > database_backup_file,並通過運行psql database_name < database_backup_file

恢復備份備份數據庫
相關問題